我在下面的代码中做错了什么?
print_r(array_values($haystack));
返回以下内容:
Array ( [0] => Array ( [name] => album2 ) [1] => Array ( [name] => album3 ) [2] => Array ( [name] => Album 1 ) [3] => Array ( [name] => jopie99 ) [4] => Array ( [name] => kopie3 ) [5] => Array ( [name] => test56 ) [6] => Array ( [name] => rob7 ) ) testArray ( [0] => Array ( [name] => album2 ) [1] => Array ( [name] => album3 ) [2] => Array ( [name] => Album 1 ) [3] => Array ( [name] => jopie99 ) [4] => Array ( [name] => kopie3 ) [5] => Array ( [name] => test56 ) [6] => Array ( [name] => rob7 ) )
现在我有以下代码:
$needle = 'album3';
if (in_array($needle, $haystack)) {
//do something
}
至少针可以在大海捞针的某处找到,但显然没有给出if语句。有人可以帮助我吗?
答案 0 :(得分:1)
当您使用多维数组时。你可以使用以下方法。
$needle = 'album3';
foreach($haystack as $h){
if ( $h['name'] == $needle ){
// do something...
}
}
答案 1 :(得分:1)
尝试使用array_column
和in_array
作为
注意:PHP> = 5.5
if(in_array($needle,array_column($arr,'name'))){
//your code
}
或者您也可以使用
if(in_array(['name' => $needle],$arr)){
//your code
}
答案 2 :(得分:0)
这应该适合你:
只需使用array_walk_recursive()
检查每个数组值,然后检查针是否等于该值。如果是,只需将结果设置为true。
<?php
$needle = 'album3';
$arr = [["album1"],["album2"],["album4"],["album3"]];
$result = FALSE;
array_walk_recursive($arr, function($v, $k)use($needle, &$result){
if($v == $needle)
$result = TRUE;
});
var_dump($result);
?>
这适用于每个阵列,无论它有多少维度。
答案 3 :(得分:0)