0

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

我有一个填充了用户数据的数组,我想检查是否存在 ID。我的问题是 in_array 检查所有内容,因此例如,如果用户 20 岁并且我想检查 ID = 20 的用户是否存在,即使 ID 列中没有 20,我也会得到正确的结果。

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

谢谢。

4

3 回答 3

7

不,有许多解决方法,但没有什么比foreach

  • 您可以使用array_columnarray_map隔离有问题的列并在结果中搜索,但这会预处理输入并使用额外的内存。
  • 您可以使用array_walk迭代数组并搜索元素,但这本质上是一个更糟糕的版本,foreach因为它涉及函数调用(这在 PHP 中是昂贵的),并且在大海捞针中找到针后不会立即停止。
  • 您可以使用array_filter并查看结果是否为空,但这又是一个更糟糕的版本foreach(它混合了上述方法的缺点)。
于 2013-07-25T08:24:05.080 回答
1

如何在多列数组中搜索值?

这是我的想法...

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
                   )) ;
           }
于 2018-07-27T08:44:21.133 回答
0
$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;
于 2018-12-19T13:18:12.853 回答