是否有一个内置的php函数可以在数组的特定列中查找值?
我有一个数组,里面装满了用户数据,我想检查是否存在ID。我的问题是in_array检查所有内容,所以例如,如果用户是20岁,并且我想检查ID=20的用户是否存在,即使ID列中没有20,我也会得到true。
我知道我可以用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;