php在特定于数组的列中


php in_array specific column

是否有一个内置的php函数可以在数组的特定列中查找值?

我有一个数组,里面装满了用户数据,我想检查是否存在ID。我的问题是in_array检查所有内容,所以例如,如果用户是20岁,并且我想检查ID=20的用户是否存在,即使ID列中没有20,我也会得到true。

我知道我可以用foreach轻松做到这一点,我的问题只是:php有现成的函数可以做到这一点吗?

谢谢。

否。有很多变通办法,但没有什么比foreach:更好的了

  • 您可以使用array_columnarray_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;