2014-02-19 89 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 : 
相关问题