array_search不起作用

时间:2018-04-11 05:36:23

标签: php arrays

ALL(Hours[Date])

以上代码抛出空值。

4 个答案:

答案 0 :(得分:1)

array_search(2, array_column($arr, 'id', 'name'));

就是答案。你试过的时候

array_search(2, array_column($arr, 'name', 'id'));

您将密钥作为针传递,而array_search在值中搜索needle,然后返回匹配值的键。

您可以根据array_column

中的要求更改关键位置

答案 1 :(得分:0)

对于多维数组,您必须使用foreach

  $arr = array(0=>array('id'=>1, 'name'=>'emp1'), 1=>array('id'=>2, 
         'name'=>'emp2'), 2=>array('id'=>3, 'name'=>'emp3'));
    foreach ($arr as $key => $val) {
       if ($val['id'] == "2") {
          echo "id matched";
          echo $key; //if you want array key (1)
          echo $val['id']; // if you want 2's id (2) 
           echo $val['name']; // if you want name (emp2)
        }
    }

答案 2 :(得分:0)

  

注意:对于PHP> = 5.5.0

我猜您希望 emp2 作为上述代码的输出。
在这里, array_column($ arr,' name',' id')将生成如下数组:

Array
(
    [1] => emp1
    [2] => emp2
    [3] => emp3
)

现在,由于 array_search()将搜索值,您需要使用您的数组:

Array
(
    [emp1] => 1
    [emp2] => 2
    [emp3] => 3
)

因此,在 array_column()中切换键。
试试,

$arr = array(0=>array('id'=>1, 'name'=>'emp1'), 1=>array('id'=>2, 'name'=>'emp2'), 2=>array('id'=>3, 'name'=>'emp3'));
echo array_search(2, array_column($arr, 'id', 'name'));

答案 3 :(得分:0)

你可以试试这个。只需在id -

之后重新排列名称
$arr = array(0=>array('id'=>1, 'name'=>'emp1'), 1=>array('id'=>2, 'name'=>'emp2'), 2=>array('id'=>3, 'name'=>'emp3'));
echo array_search(2, array_column($arr, 'id', 'name'));