php - 通过特定属性的值在数组中搜索对象的最有效方法

标签 php arrays object filtering early-return

什么是最快、最有效的实现搜索方法的方法,该方法将返回具有限定 id 的对象?

示例对象数组:

$array = [
    (object) ['id' => 'one', 'color' => 'white'],
    (object) ['id' => 'two', 'color' => 'red'],
    (object) ['id' => 'three', 'color' => 'blue']
];

我在里面写了什么:

function findObjectById($id){

}

如果我调用,期望的结果将返回 $array[0] 处的对象:

$obj = findObjectById('one')

否则,如果我将“四”作为参数传递,它将返回 false

最佳答案

您可以迭代该对象:

function findObjectById($id){
    $array = array( /* your array of objects */ );

    foreach ( $array as $element ) {
        if ( $id == $element->id ) {
            return $element;
        }
    }

    return false;
}

编辑:

更快的方法是使用一个数组,其键等于对象的 ID(如果唯一);

然后您可以按如下方式构建您的函数:

function findObjectById($id){
    $array = array( /* your array of objects with ids as keys */ );

    if ( isset( $array[$id] ) ) {
        return $array[$id];
    }

    return false;
}

关于php - 通过特定属性的值在数组中搜索对象的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7106772/

相关文章:

Java:创建了多少个对象?数组作为成员变量

java - 我如何交换数组的数据?

PHP - 通过变量获取对象属性

php - 在 PHP 中访问 javascript DOM 对象

php - 返回具有最高值的变量?

php - 在 PHP 中从十六进制字符串写入二进制数据

mysql - Magento - 在类别的自定义设计中添加一个选项

php - 搜索另一个站点的搜索框

php - 从数组中加载特定数据

javascript - 嵌套的键值对分组到一个数组中