如何在关联数组中使用PHP in_array?

Jac*_*hen 10 php search associative-array

是否有任何php函数,例如in_array,你可以通过mysql函数"mysql_fetch assoc"获得关联数组?

例如,如果我有一个如下所示的$数组:

array(0=>(array(ID=>1, name=>"Smith"), 1=>(array(ID=>2, name=>"John"))
Run Code Online (Sandbox Code Playgroud)

我能做点什么吗 in_array(key,value,array)?

或者在我的情况下,如果我正在寻找ID值为"1" in_array("ID",1,$array),.

这是我的解决方案,如果您认为这是正确的方式,请对其进行评论:

function in_assoc_array($key,$value,$array)
{
    if (empty($array))
        return false;
    else
    {
        foreach($array as $a)
        {
            if ($a[$key] == $value)
                return true;
        }
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

Phi*_*asa 31

在你的情况下,我想知道简单地使用isset()是否更有意义,即

isset($a[$key])
Run Code Online (Sandbox Code Playgroud)

  • 当我们知道键和数组是以这种方式设计时,我们就使用 isset 。有时我们必须 in_array 进行搜索 (2认同)

小智 11

试试这个......您可以将此功能用于相关阵列的任何深度.只是对这个函数的约束是键值不会重复在数组中的任何位置.

<?php 
function is_in_array($array, $key, $key_value){
      $within_array = 'no';
      foreach( $array as $k=>$v ){
        if( is_array($v) ){
            $within_array = is_in_array($v, $key, $key_value);
            if( $within_array == 'yes' ){
                break;
            }
        } else {
                if( $v == $key_value && $k == $key ){
                        $within_array = 'yes';
                        break;
                }
        }
      }
      return $within_array;
}
$test = array(
                0=> array('ID'=>1, 'name'=>"Smith"), 
                1=> array('ID'=>2, 'name'=>"John")
        );
print_r(is_in_array($test, 'name', 'Smith'));
?>
Run Code Online (Sandbox Code Playgroud)

  • 令人失望的是,这是公认的答案. (4认同)

Sha*_*ran 10

你不能直接在嵌套数组上做它.你需要将它嵌套一点然后再做.

<?php
$arr=array(0=>array('ID'=>1, 'name'=>"Smith"), 1=>array('ID'=>2, 'name'=>"John"));

foreach($arr as $arr1)
{
    if(in_array(1,$arr1))
    {
       echo "Yes found.. and the correspoding key is ".key($arr1)." and the employee is ".$arr1['name'];
    }
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT :

Yes found.. and the correspoding key is ID and the employee is Smith
Run Code Online (Sandbox Code Playgroud)


Cli*_*bbs 9

这是您可以使用的单衬。

$isInArray = in_array(1, array_column($names, 'ID'));
Run Code Online (Sandbox Code Playgroud)


小智 5

首先,您必须知道要在in_array函数中用作干草堆的关联数组的哪一部分。然后,您可以使用in_array而无需其他代码。

值示例:

<?php
$assoc = array(1 => "apple", 2 => "banana", 3 => "lemon", 4 => "pear");
$haystack = array_values($assoc);
echo "<p>" . print_r($assoc, true) . "</p>";

$needle = 'banana';
$find = (in_array($needle, $haystack)) ? 'TRUE' : 'FALSE';
echo "<p>$needle : $find</p>";

$needle = 'cherry';
$find = (in_array($needle, $haystack)) ? 'TRUE' : 'FALSE';
echo "<p>$needle : $find</p>";
?>
Run Code Online (Sandbox Code Playgroud)

结果是 :

Array ( [1] => apple [2] => banana [3] => lemon [4] => pear )

banana : TRUE

cherry : FALSE
Run Code Online (Sandbox Code Playgroud)