2017-05-28 53 views
0

假设我有2d数组,其中只有一些行实际上在列中有一些值,而其他行没有任何值。PHP迭代缺失行的多维数组

例如:只有第5行和第9行有一些数据,其他行是空的。列数是固定的 - 6

我还没有为2D数组声明任何大小。

我要查找其值是10

for ($t1=0; $t1 < count($array); $t1++) { 

    for ($t2=0; $t2 < 6; $t2++) { 

     if($array[$t1][$t2] == 10) { 
      // do something 
     } 
    } 
} 

现在,这个代码将不能工作,因为数($阵列)将2所有领域,所以它永远不会重复的行5和9。

我也需要得到我找到匹配的索引。

如何在这种情况下编写代码使其工作?

回答

1

可以有效地在这种情况下使用foreach

foreach($array as $s => $arrayElement) { 
    for($t=0; $t<6; $t++) if ($arrayElement[$t] == 10) { 
     // do something - $s is the row index, $t is the column index 
    } 
} 
+0

我尝试使用foreach,但无法编写正确的代码。你能写出这个案例的完整代码吗? – user5155835

+0

在'foreach'循环的内部,你使用'$ arrayElement'作为你的行的直接**指针(因此你不必为它使用迭代器)。内部不使用'$ array'。 (因此,内部循环将是单维传统的'for'循环 - 或者如果不需要列索引,则可以用foreach替换它。) – Lukasz032

+0

我还需要获取找到匹配项的索引。我如何获得索引? – user5155835

0

我想,你必须定义数组的一个问题。可能是,你可以使用这个脚本。

<?php 
$cars = array(
    array(
     "Volvo", 
     22, 
     18 
    ), 
    array(
     "BMW", 
     15, 
     13 
    ), 
    array(
     "Saab", 
     5, 
     2 
    ), 
    array(
     "Land Rover", 
     17, 
     15 
    ), 
    array(
     "Mercedes", 
     22, 
     19 
    ) 
); 

$length = count($cars); 

for ($i = 0; $i < $length; $i++) { 
    for ($j = 0; $j < 3; $j++) { 
     echo $cars[$i][$j] . "</br>"; 
    } 
} 

?> 

我希望它能解决您的问题。

+0

这是关于具有非单调键值的数组,因此您的示例将无法按预期工作。 – Lukasz032