Проблемас массивами

trasherz

Новичок
Проблемас массивами

Имеется:
PHP:
$rows=array(); 
while ($rows[]=mysql_fetch_array($result2));;
При выполнения вот этого:
PHP:
foreach ($rows as $row) { echo $row['loc']." : ".$row['loc_data']."<br>"; }
Получаю:
WAREHOUSE : 0
WAREHOUSE : 0
WAREHOUSE : 0
PAPERDOLL : 12
PAPERDOLL : 6
PAPERDOLL : 9
PAPERDOLL : 10
INVENTORY : 0
<cutted>
Значение loc_data может быть только у loc=PAPERDOLL, у всех остальных оно равно 0.
Так вот, моя задача выбрать загнать в новый массив все те значения, у которых loc="PAPERDOLL".
Как оэто осуществить?
 

WP

^_^
Дополняю свой вышеприведенный код =)
PHP:
$paperdoll =  array();
foreach ($rows as $row) {if ($row['loc_data'] == 'PAPERDOLL') {$paperdoll[] = $row;}}
Это если надо загнать в массив ряды.
 

que_bunt

Новичок
а зачем использовать ещо и массив rows, можно ведь сразу (в цыкле
PHP:
while ($row=mysql_fetch_array($result2))
делать так как посоветовал WP
 

WP

^_^
que_bunt
А там ему надо по массиву два раза проходить... можно mysql_data_seek(), но он выбрал $rows.
 

trasherz

Новичок
WP, спасибо.. получилось.. но вот новый вопрос.

мне нужно сдлеать нечто вроде:
PHP:
foreach ($paperdoll as $row1) { 
if ($row1['loc_data'] == 1) { echo "1<br>"; } else { echo "default1<br>"; } 
if ($row1['loc_data'] == 1) { echo "1<br>"; } else { echo "default1<br>"; }
При запуске такого скрипта, мне выдается:
default1
default1
default1
default1
default1
default1
default1
default1
1
default1
default1
2
default1
default1
default1
default1
default1
default1
default1
default1
А мне надо так, чтобы если $row1['loc_data'] == 1, происходило действие и это условие больше не выполнялось.. Т.е. первый цикл проходит все условия ровно до того момента, как $row1['loc_data'] == n, из второго цикла это условие, которое удовлетворилось в первом цикле, уже убирается. И по аналогии из следующих циклов так..
Наверное, я непонятно объяснил :( но все же, может кто-нибудь поймет..
 

zerkms

TDD infected
Команда форума
trasherz
а может дешевле всего запросить из БД только то что тебе нужно?
 

trasherz

Новичок
Автор оригинала: [DAN]
trasherz, используй конечный автомат.
Поиск ничего не дал. Можно поподробнее?

-~{}~ 09.05.06 09:13:

Автор оригинала: zerkms
trasherz
а может дешевле всего запросить из БД только то что тебе нужно?
У меня не в этом проблема.
А в выполнении условий в цикле..
 

[DAN]

Старожил PHPClub
насколько я понял условие задачи, получается так:
PHP:
$countinue	= true;
$flag		= 1;

while( $countinue )
{
	reset( $paperdoll );
	
	switch( $flag )
	{
		case 1:
			foreach( $paperdoll as $row )
			{
				if( $row['something'] == 1 )
				{
					$flag = 2;
					break;
				}
			}
		break;
		
		case 2:
			foreach( $paperdoll as $row )
			{
				if( $row['something'] == 2 )
				{
					$flag = 3;
					break;
				}
			}
		break;
		
		case n:
			foreach( $paperdoll as $row )
			{
				if( $row['something'] == n )
				{
					$continue = false;
					break;
				}
			}
		break;
	}
}
 
Сверху