今天我会有一个相当简单的问题。我们有以下资源:如何检查一个数组是否包含PHP中的另一个数组?
$a = array(1 => 5, 2 => 3, 3 => 13, 9 => array('test'), 4 => 32, 5 => 33);
它是如何真能找出是否阵“一”中有一个数组元素和返回键,如果有一个(或多个)?
今天我会有一个相当简单的问题。我们有以下资源:如何检查一个数组是否包含PHP中的另一个数组?
$a = array(1 => 5, 2 => 3, 3 => 13, 9 => array('test'), 4 => 32, 5 => 33);
它是如何真能找出是否阵“一”中有一个数组元素和返回键,如果有一个(或多个)?
一个可行的方法:
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。
是的,我已经尝试过,但是这样,我将收到'警告:为foreach提供的无效参数()',因为它的数组格式不正确。我知道我可以用'@'忽略它,但是还有其他方法吗? –
请注意,函数参数中的'array'类型提示。如果你不确定'$ test_var'是否是一个数组,你应该检查它(使用'is_array') - 但这可能意味着代码中有其他错误。 – raina77ow
谢谢我在我的代码中发现了这个问题。问题在于我输入的数组中的某些元素实际上是错误的。谢谢你的回答,我必须非常累,我已经多次检查过,没有看到错误。 –
可以使用的foreach,因为你正在寻找任何阵列:
foreach ($a as $key => $test) {
if (is_array($test)) {
$keys[] = $key;
}
}
阵列的所有按键的排列$a
是数组$keys
英寸
$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)];
}
}
我尝试过不同的方法。
$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 :
你或许可以使用['in_array()'](http://www.php.net/in_array) –
是'和array_diff()'的你正在寻找的功能? –
我可能会通过它循环,并用is_array测试 - 捕获密钥,并在完成时返回密钥 – wribit