PHP:在数组中查找数组,不循环
我有一个简单的布尔数组,如下所示:PHP:在数组中查找数组,不循环,php,multidimensional-array,Php,Multidimensional Array,我有一个简单的布尔数组,如下所示: array( array('dog' => true), array('cat' => true), array('bird' =>false), array('fish' => true) ) 如果没有循环构造,如何查找条目,例如“cat”?我想我应该可以用php数组函数来实现这一点,但解决方案却在我眼前!我只是想知道‘cat’是否是一个有效的键——我对它的值不感兴趣 在上面的例子中,“cat”应该返
array(
array('dog' => true),
array('cat' => true),
array('bird' =>false),
array('fish' => true)
)
如果没有循环构造,如何查找条目,例如“cat”?我想我应该可以用php数组函数来实现这一点,但解决方案却在我眼前!我只是想知道‘cat’是否是一个有效的键——我对它的值不感兴趣
在上面的例子中,“cat”应该返回true,而“turtle”应该返回false。这是一种荒谬的存储密钥的方法。如果每个键只有一个元素,那么将其自身设置为一个数组是没有意义的 做我认为你想做的事情的一个更明智的方法是:
$myArray = array(
'dog' => true,
'cat' => true,
'bird' => false,
'fish' => true)
)
在这种情况下,您可以使用检查键是否存在
如果必须使用当前的数组结构,那么循环是检查的唯一方法
$array = array(
array('dog' => true),
array('cat' => true),
array('bird' =>false),
array('fish' => true)
);
array_walk($array,'test_array');
function test_array($item2, $key){
$isarray = is_array($item2) ? 'Is Array<br>' : 'No array<br>';
echo $isarray;
}
您可以这样实现:
$yourArray = array
(
array( 'dog' => true )
,array( 'cat' => true )
,array( 'bird' =>false )
,array( 'fish' => true )
);
用于检查密钥是否存在的代码:
$itemToFind = 'cat'; // turtle
$result =
array_key_exists
(
$itemToFind
,array_reduce(
$yourArray
,function ( $v , $w ){ return array_merge( $v ,$w ); }
,array()
)
);
var_dump( $result );
$itemToFind = 'cat'; // turtle
$result = ( count ( array_column( $yourArray ,'cat' ) ) > 0 ) ? true : false;
var_dump( $result );
用于检查键是否存在并检索其值的代码:
$itemToFind = 'cat'; // bird
$result =
array_key_exists
(
$itemToFind
,$reducedArray = array_reduce(
$yourArray
,function ( $v , $w ){ return array_merge( $v ,$w ); }
,array()
)
) ?$reducedArray[ $itemToFind ] :null;
var_dump( $result );
使用PHP>5.5.0
您可以使用和PHP函数的组合来实现它:
用于检查密钥是否存在的代码:
$itemToFind = 'cat'; // turtle
$result =
array_key_exists
(
$itemToFind
,array_reduce(
$yourArray
,function ( $v , $w ){ return array_merge( $v ,$w ); }
,array()
)
);
var_dump( $result );
$itemToFind = 'cat'; // turtle
$result = ( count ( array_column( $yourArray ,'cat' ) ) > 0 ) ? true : false;
var_dump( $result );
上面用PHP5.5.5测试的代码是为什么害怕循环?简单的解决方案…不回答问题。
turtle
如何符合这个答案?