2015-08-08 5 views
0

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

<?php 
$rowData = Array 
(


[1] = Array 
    (
     [0] = Buffalo 
     [1] = Tampa Bay 
     [2] = -7 
     [3] = favorite 
     [4] = 0 
     [5] = 46 
    ) 

[2] = Array 
    (
     [0] = Minnesota 
     [1] = Tennessee 
     [2] = 3 
     [3] = favorite 
     [4] = 1 
     [5] = 33 
    ) 

[3] = Array 
    (
     [0] = Green Bay 
     [1] = Cincinnati 
     [2] = 3 
     [3] = favorite 
     [4] = 1 
     [5] = 33 
    ) 

[4] = Array 
    (
     [0] = Jacksonville 
     [1] = Buffalo 
     [2] = 4 
     [3] = underdog 
     [4] = 1 
     [5] = 54 
    ) 

); 
?> 

То, что я хочу сделать, это цикл по каждому массиву и если [4] запись = 1 выполняют одну функцию на этом массиве, и если [4] запись = 0 выполняет другую функцию. Я не уверен, как идентифицировать каждую из них в цикле ..

foreach ($rowData as $row => $tr) 
{ 
    //if [4] is equal to 1 
    if() 
    { 

    } 
    //if [4] is equal to 0 
    elseif() 
    { 

    } 

} 
+1

Это так же легко, как 'если ($ т.р. [4] == 1) {/ * do somthing * /} elseif ($ tr [4] == 0) {/ * сделать что-то еще * /} ' – Orangepill

+0

http://stackoverflow.com/questions/842956/php -foreach-проходные-многомерная-массив – James111

ответ

0

Если вы хотите, чтобы выполнить некоторые функции по подразделам массивов $rowData для того, чтобы получить обновленную версию после того, как цикл закончен, что нужно сделать это :

echo '<pre>',print_r($rowData),'</pre>'; 

foreach ($rowData as &$tr) // the & sign will pass the sub array $tr as a reference 
{ 
    //if [4] is equal to 1 
    if($tr[4] == 0) 
    { 
     execute_function1($tr); 
    } 
    //if [4] is equal to 0 
    elseif($tr[4] == 0) 
    { 
     execute_function2($tr); 
    } 
} 

// again you need to pass the sub array as a reference in order to make sure that the functionality you are going to apply to the $tr in the following functions will be also applied to the respective $tr of the $rowData array 
execute_function1(&$tr){ .. }; 

execute_function2(&$tr){ .. }; 

echo '<pre>',print_r($rowData),'</pre>'; 

Я использовал echo заявления (один перед циклом и один после того, как), так что вы можете увидеть, как ваши $rowData изменения массива.

0

Попробуйте это:

foreach($rowData as $array) 
{ 
    if($array[4] == 1) 
     //some action 
    else 
     //another ction 
} 
0

Вы можете сделать так, но dont't забудьте проверить, если $ тр [4] существует:

foreach ($rowData as $row => $tr) 
    { 
     //Test if the key 4 exists 
     if(isset($tr[4])) { 
      //Switch value 
      switch($tr[4]) { 
       case 1: 
        //Do action... 
       break; 
       case 0: 
        //Do action... 
       break; 
       default: 
        //Do nothing... 
       break; 
      } 
     } 
    } 
Смежные вопросы