2016-11-25 19 views
0

我有以下多維數組和我想的不同,如果該數組中只有一個子陣列或多個。獲取一個子陣列或者多個子陣列之間的差異多維數組

例如:

  • 在陣列[1]只有一個子陣列[示例]
  • 在陣列[2]有兩個子陣列[示例]

[content] => Array 
 
     (
 
      [...] 
 
      [1] => Array 
 
       (
 
        [example] => Array 
 
         (
 
          [value] => GET THIS 
 
          [attr] => Array 
 
           (
 
            [...] 
 
           ) 
 
         ) 
 
       ) 
 
      [2] => Array 
 
       (
 
        [example] => Array 
 
         (
 
          [0] => Array 
 
           (
 
            [value] => GET THIS 
 
            [attr] => Array 
 
             (
 
              [...] 
 
             ) 
 
           ) 
 
          [1] => Array 
 
           (
 
            [value] => GET THIS 
 
            [attr] => Array 
 
             (
 
              [...] 
 
             ) 
 
           ) 
 
         ) 
 
       )

我們從第一個數組中的[值]我想嘗試:

foreach ($content as $example) { 
    echo($content['example']['value']); 
} 

並獲得從第二陣列中的每個[值]我想嘗試:

foreach ($content as $example) { 
    foreach ($example as $values) { 
     echo($value['value']); 
    } 
} 

到目前爲止好,但我怎麼決定哪些函數來運行?我錯過了什麼嗎? 是否有一個if語句,它可以幫助我嗎?

喜歡的東西:

if(multiple sub-arrays){ 
    // do first code example 
} else { 
    // do second code example 
} 

我只是想一個方法來獲得所謂的[值]的所有值從數組中。

預先感謝您!

+0

我看了你的問題兩次,仍不能完全得到的是你正在試圖解決這個問題。你能舉一個你期望得到的最終結果的例子嗎? –

回答

1

最明顯的解決方案是改變功能,其產生的content陣列,以便它總是在像格式生成子陣列:

[content] => Array 
     (
      [...] 
      [1] => Array 
       (
        [example] => Array 
         (
          [0] => Array 
           (
            [value] => GET THIS 
            [attr] => Array 
             (
              [...] 
             ) 
           ) 
         ) 
       ) 
      [2] => Array 
       (
        [example] => Array 
         (
          [0] => Array 
           (
            [value] => GET THIS 
            [attr] => Array 
             (
              [...] 
             ) 
           ) 
          [1] => Array 
           (
            [value] => GET THIS 
            [attr] => Array 
             (
              [...] 
             ) 
           ) 
         ) 
       ) 

但是,如果你沒有這樣的選擇 - 然後使用一個簡單的檢查:

foreach ($content as $item) { 
    // here check if your `$item` has an `value` subkey under `example` key 
    if (array_key_exists('value', $item['example'])) { 
     echo($item['example']['value']); 
    } else { 
     foreach ($item['example'] as $values) { 
      echo ($values['value']); 
     } 
    } 
} 
+0

非常感謝!是的,我無法改變我的構造函數。所以這是我搜索的解決方案:) –

0

假設最終作爲一個「值」節點八方尺寸:

function arrayIterate($array){ 
    foreach ($content as $example) { 
     if(!isset($example['value'])){ 
      arrayIterate($example); 
     }else{ 
      echo($example['value']); 
     } 
    } 
}