是否有内置的 php 函数可以在数组的特定列中查找值?
我有一个填充了用户数据的数组,我想检查是否存在 ID。我的问题是 in_array 检查所有内容,因此例如,如果用户 20 岁并且我想检查 ID = 20 的用户是否存在,即使 ID 列中没有 20,我也会得到正确的结果。
我知道我可以用 foreach 轻松做到这一点,我的问题只是: php 是否有一个现成的函数可以做到这一点?
谢谢。
不,有许多解决方法,但没有什么比foreach
:
array_column
或array_map
隔离有问题的列并在结果中搜索,但这会预处理输入并使用额外的内存。array_walk
迭代数组并搜索元素,但这本质上是一个更糟糕的版本,foreach
因为它涉及函数调用(这在 PHP 中是昂贵的),并且在大海捞针中找到针后不会立即停止。array_filter
并查看结果是否为空,但这又是一个更糟糕的版本foreach
(它混合了上述方法的缺点)。如何在多列数组中搜索值?
这是我的想法...
function is_column_in_array($value,$column,$array){
$rows = array_column( $array,$column);
if( in_array($value,$rows)){
return true;
}
return false;
}
如何使用!
$rows = array();
if( ! $this->is_column_in_array( $item->roz,'roz' ,$rows )){
array_push($rows,
array(
'roz' => $item->roz,
'rozName' => $item->rozName
)) ;
}
$adult_count = 0;
$child_count = 0;
foreach($passenger_info as $key => $value) {
if($value["room_no"] == $selected_room){
switch ($value["passenger_type"]){
case "adult":
$adult_count++;
break;
case "children":
$child_count++;
break;
default:
break;
}
}
}
echo "Adults : ".$adult_count;
echo "<br>";
echo "Children : ".$child_count;