2017-03-04 18 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) 
{ 
    //... 
} 

但是,它的,我掙扎的第一陣列,我怎麼可以處理通過第一陣列循環,同時仍然支持循環通過第二個數組,因爲我的函數可以傳遞上面顯示的兩種類型的數組?

我確實試過,併爲第一個數組做了兩個foreach循環,但我想知道是否有一種方法,我可以只有一個循環來處理這兩種類型的數組,以及是否有辦法檢測第一種類型的數組,因爲我需要做的事情,如果第一種數組傳入?

+0

你想用兩個陣列的單個循環? –

+0

如果可能的話?或者在檢測到時通過第一個數組循環的方法? – Erdss4

+0

帶有回調函數的array_map或array_reduce可能對您有所幫助 – bxN5

回答

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

您的嵌套數組保證至少有一個元素?否則,'array_keys'行會導致問題。只需添加一張支票,如果您需要,我沒有添加答案。但如果你認爲這是值得檢查的格式,請做:) – sidyll