2010-03-26 5 views
3

У меня есть два цикла foreach для отображения некоторых данных, , но я хочу использовать один foreach на основе результата базы данных.Как запустить цикл foreach с тройным условием

означает, что если есть какая-либо строка возвращается из базы данных, то forach($first as $fk=>$fv) должен выполнить иначе foreach($other as $ok) должен выполнить. я м unsing ниже тройной оператор, который дает ошибку синтаксического анализа

$n=$db->numRows($taskData); // databsse results 

<?php ($n) ? foreach ($first as $fk=>$fv) : foreach ($other as $ok) 
{ ?> 
<table><tr><td>......some data...</td></tr></table> 
<?php } ?> 

пожалуйста предложить мне, как обрабатывать такие условия с помощью троичной оператора или какой-либо другой идеи.

Благодаря

ответ

4

Использование условного оператора, чтобы выбрать массив использовать, а затем использовать $fv в качестве значения, а не $ok для второго варианта.

foreach (($n ? $first : $other) as $fk => $fv) 

Имея две совершенно разные петель выбирают по условию и с совершенно различными переменными не будет действительно хорошая идея, поскольку это привело бы к очень запутанной коде, как вы бы не уверены, не проверяя $n какой из $fk , $fv и $ok.

Если вам нужно сделать что-то другое в зависимости от состояния, возможно, разделы кода, которые являются одними и теми же в функциях, были бы лучшей идеей?

+0

второй массив - это числовой массив, независимо от того, является ли первый массив ассоциативным массивом, чей ключ является идентификационным для второго значения массива. thats yi использовать '$ ok' только – diEcho

+1

Это не имеет значения - вы можете использовать' $ key => $ val' синтаксис на числовых массивах. – Amber

+0

Я использовал 'array_flip' для другого массива, теперь оба ключа массива используются в foreach – diEcho

Смежные вопросы