2014-11-27 2 views
1

Я хотел бы получить некоторые рекомендации относительно того, как отображать данные в массиве, который может быть или не быть многомерным.PHP итерации через массивы

настоящее время я использую это -

if (count($array) == count($array, COUNT_RECURSIVE)){ 
    echo $array['Name']; 
    echo $array['Surname']; 
    echo $array['Email']; 
}else{ 
    foreach($res as $val){ 
     echo $val['Name'];  
     echo $val['Surname']; 
     echo $val['Email']; 
    } 
} 

Эта работа хорошо, однако, это не означает, много повторяющегося кода, если имеется несколько полей для отображения.

Есть ли способ сконденсировать код, чтобы не было дублирования?

+0

написать функцию для отображения данных массива – user3510665

+0

Использовать рекурсивную функцию итератора. Вы в основном на полпути с тем, что у вас есть. Посмотрите, как вручную выполнить рекурсивную функцию или использовать классы итератора OOP. – Rasclatt

+0

Это ваш настоящий код? Как и в, вы действительно просто выводите поля и ничего больше? – David

ответ

1

Проще было бы, возможно, будет изменять массив при необходимости:

if (count($array) == count($array, COUNT_RECURSIVE)) { 
    $array = array($array); 
} 

foreach($res as $val){ 
    echo $val['Name'];  
    echo $val['Surname']; 
    echo $val['Email']; 
} 
+0

Отлично, это именно то, что мне нужно – djcamo

0

Для этого вам необходимо использовать рекурсивную функцию. Вот пример рекурсивной функции, которые повторяют это элементы в многомерный массив:

$array = array(
    array("a", array("a","b","c"),"c"=>"c"), 
    array("a","b","c"), 
    array("a","b","c")); 

displayArray($array); 

function displayArray($array) 
{ 
    foreach($array as $k => $v) 
    { 
     if(is_array($v)) 
     { 
      displayArray($v); 
     } 
     else 
     { 
      echo $v."<br />"; 
     } 
    } 
} 

Выход будет:

aabccabcabc 
0

Простым способом может быть использование функции array_walk_recursive. В руководстве php также будет приведен пример.

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