2017-03-04 10 views
0

私はこれらの配列の両方をループにしたい場合:PHPで異なる配列を動的にループする方法は?

array (size=3) 
    0 => 
    array (size=1) 
     'email' => string '[email protected]' (length=17) 
    1 => 
    array (size=1) 
     'name' => string 'Joe' (length=3) 
    2 => 
    array (size=1) 
     'lastName' => string 'Doe' (length=3) 

​​

私は両方の配列を示すいた理由は、私は両方の配列を処理するための関数を記述しようとしていますです。

foreach($inserts as $colName => $colValue) 
{ 
    //... 
} 

しかし、まだループをサポートしながら、私は最初の配列をループ処理することができますどのように私は苦労していますその最初の配列を、:私は私の機能に使用されているように私は二番目の配列をループする方法を理解します私の関数が上に示した配列の両方の型を渡すことができるので、2番目の配列を介して?

私は最初の配列の2つのforeachループを試しましたが、両方の型の配列を処理するためのループが1つしかない場合があります。配列の最初の型が渡されたら何かをする必要があるので、最初の型の配列ですか?

+0

あなたは両方のアレイのための単一のループを使用したいですか? –

+0

可能であれば?または、検出されたときに最初の配列をループする方法は? – Erdss4

+0

array_mapまたはarray_reduce with callback function – bxN5

答えて

2

最初のケースで を実行すると、より簡単な2番目のケースにスティックして検出できます。その場合、値を変換します。ここ トリックはis_array()の使い方です:

foreach ($inserts as $colName => $colValue) { 
    if (is_array($colValue)) { 
     # get first key 
     $colName = array_shift(array_keys($colValue)); 
     # reassign value 
     $colValue = $colValue($colName); 
    } 
    # proceed as normal ... 
} 
+0

配列の内容が常に同じであることを保証できない場合は、セキュリティ対策が必要な場合があります。 – sidyll

+0

なぜセキュリティ問題になるのか少し詳しく説明できますか? – Erdss4

+0

ネストされた配列の場合、少なくとも1つの要素があることが保証されていますか?そうでなければ、 'array_keys'行が問題を引き起こします。必要に応じて小切手を追加するだけで、私は答えを追加しませんでした。しかし、あなたがフォーマットをチェックする価値があると思うなら、どうかしてください:) – sidyll

関連する問題