Php 如何进入_array()来处理多维数组?

Php 如何进入_array()来处理多维数组?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我在下面的代码中做错了什么 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

我在下面的代码中做错了什么

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语句。有人能帮我吗?

因为你正在使用多维数组。你可以使用下面的方法

$needle = 'album3';
foreach($haystack as $h){
  if ( $h['name'] == $needle ){
     // do something...
  }
}

尝试使用
array\u列
作为

注意:PHP>=5.5

if(in_array($needle,array_column($arr,'name'))){
   //your code
}
或者您也可以使用

if(in_array(['name' => $needle],$arr)){
    //your code
}

这应该适合您:

只需使用遍历每个数组值,并检查指针是否等于该值。如果是,只需将结果设置为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);

?>


这适用于每个数组,无论它有多少个维度。

请尝试使用严格检查:

if (in_array($needle, $haystack, true))
有关更多信息,请阅读手册。

RTM