2017-05-28 10 views
0

2次元配列があるとします。実際にはいくつかの行だけが列に値を持ち、他の行は何も持っていません。PHPが複数行の行を欠いていると繰り返します

たとえば、行5と9のみにデータがあり、他の行は空です。列数が固定されています - 6

2D配列のサイズは何も宣言していません。

は、私は、その値が、カウント($配列)は2となりますので、今、このコードは動作しません10.

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

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

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

あるすべてのフィールドを見つけたいので、行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

関連する問題