2017-05-28 52 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