例如从下面的关联数组中搜索名称而不使用循环。
$data = array(
array('name'=>'john doe', 'marks'=>23),
array('name'=>'stevin smith', 'marks'=>76),
array('name'=>'david warner', 'marks'=>71)
);
答案 0 :(得分:4)
您可以将array_column()
与第三个参数一起使用来创建关联数组。因此,使用它来创建一个标记数组,由名称列索引...
$data = array(
array('name'=>'john doe', 'marks'=>23),
array('name'=>'stevin smith', 'marks'=>76),
array('name'=>'david warner', 'marks'=>71));
$marks = array_column($data, 'marks', 'name');
$name = 'john doe';
if ( isset($marks[$name])) {
echo $name."=".$marks[$name];
}
由于数组是由名称索引的,只需使用'isset()'。
答案 1 :(得分:0)
最好的方法是使用array_column函数
$data = array(
array('name'=>'john doe', 'marks'=>23),
array('name'=>'stevin smith', 'marks'=>76),
array('name'=>'david warner', 'marks'=>71));
$names = array_column($data, 'name');
$search = 'david warner';
if(in_array($search, $names))
echo "Found";
else
echo "Not";

答案 2 :(得分:0)
只要您正在评估数组的每个信息,php将在内部使用迭代器。鉴于循环非常便宜,这是一件好事。
但如果你不想明确地迭代,这里有一个解决方案:
$johnDoeExists = array_walk_recursive( $data, function ( $value, $key ) {
return $key === 'name' && $value === 'john doe';
} );
array_walk_recursive
使用已定义的回调函数评估数组的每个元素,嵌套与否。
或者,等等......
如果你真的不想使用循环并编写一个绝对糟糕且不可靠的代码,那么就去吧。
$johnExists = strpos(json_encode($data), "john doe") !== 0;
不用说,只需循环数据。