2014-02-19 249 views
1

今天我會有一個相當簡單的問題。我們有以下資源:如何檢查一個數組是否包含PHP中的另一個數組?

$a = array(1 => 5, 2 => 3, 3 => 13, 9 => array('test'), 4 => 32, 5 => 33); 

它是如何真能找出是否陣「一」中有一個數組元素和返回鍵,如果有一個(或多個)?

+3

你或許可以使用['in_array()'](http://www.php.net/in_array) –

+0

是'和array_diff()'的你正在尋找的功能? –

+1

我可能會通過它循環,並用is_array測試 - 捕獲密鑰,並在完成時返回密鑰 – wribit

回答

4

一個可行的方法:

function look_for_array(array $test_var) { 
    foreach ($test_var as $key => $el) { 
    if (is_array($el)) { 
     return $key; 
    } 
    } 
    return null; 
} 

這是相當瑣碎,這個功能轉化爲收集所有這些鍵:

function look_for_all_arrays(array $test_var) { 
    $keys = []; 
    foreach ($test_var as $key => $el) { 
    if (is_array($el)) { 
     $keys[] = $key; 
    } 
    } 
    return $keys; 
} 

Demo

+0

是的,我已經嘗試過,但是這樣,我將收到'警告:爲foreach提供的無效參數()',因爲它的數組格式不正確。我知道我可以用'@'忽略它,但是還有其他方法嗎? –

+0

請注意,函數參數中的'array'類型提示。如果你不確定'$ test_var'是否是一個數組,你應該檢查它(使用'is_array') - 但這可能意味着代碼中有其他錯誤。 – raina77ow

+0

謝謝我在我的代碼中發現了這個問題。問題在於我輸入的數組中的某些元素實際上是錯誤的。謝謝你的回答,我必須非常累,我已經多次檢查過,沒有看到錯誤。 –

0

可以使用的foreach,因爲你正在尋找任何陣列:

foreach ($a as $key => $test) { 
    if (is_array($test)) { 
     $keys[] = $key; 
    } 
} 

陣列的所有按鍵的排列$a是數組$keys英寸

0
$array = array(1 => 5, 2 => 3, 3 => 13, 9 => array('test'), 4 => 32, 5 => 33); 
foreach($array as $key => $value){ 
    if(is_Array($value)){ 
     echo $value[key($value)]; 
    } 
} 
0

我嘗試過不同的方法。

$a = array(1 => 5, 2 => 3, 3 => 13, 9 => array('test'), 4 => 32, 5 => 33); 

foreach ($a as $aas ): 

     if(is_array($aas)){ 
      foreach ($aas as $key => $value): 
       echo " (child array is this $key : $value)"; 
     endforeach; 
     }else{ 
       echo " Value of array a = $aas : "; 


     } 
    endforeach; 

輸出是這樣的:

Value of array a = 5 : Value of array a = 3 : 
Value of array a = 13 : (child array is this 0 : 
test) Value of array a = 32 : Value of array a = 33 : 
相關問題