如何将PHP in_array与关联数组一起使用?

2022-08-30 20:12:34

是否有任何php函数,例如通过mysql函数“mysql_fetch assoc”获得的关联数组in_array?

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

array(0=>(array(ID=>1, name=>"Smith"), 1=>(array(ID=>2, name=>"John"))

我可以做这样的事情吗?in_array(key,value,array)?

或者在我的情况下,如果我正在寻找“1”的ID值,.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;
    }
}

答案 1

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

isset($a[$key])

答案 2

试试这个.....您可以将此函数用于关联数组的任何深度。此函数的缺点是键值不会在数组中的任何位置重复。

<?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'));
?>

推荐