php - 是否可以在不循环的情况下检查一个值是否存在于充满对象的数组中?

标签 php arrays oop

<分区>

我有一个包含多个对象的数组。是否可以检查任何一个对象中是否存在值,例如id->27 没有循环?以类似于 PHP 的 in_array() 函数的方式。谢谢。

> array(10)[0]=>Object #673 
                     ["id"]=>25 
                     ["name"]=>spiderman   
           [1]=>Object #674
                     ["id"]=>26
                     ["name"]=>superman   
           [2]=>Object #675
                     ["id"]=>27
                     ["name"]=>superman 
           ....... 
           .......
           .........

最佳答案

没有。如果您经常需要快速直接查找值,则需要为它们使用数组键,这样查找速度快如闪电。例如:

// prepare once
$indexed = array();
foreach ($array as $object) {
    $indexed[$object->id] = $object;
}

// lookup often
if (isset($indexed[42])) {
    // object with id 42 exists...
}

如果您需要通过不同的键查找对象,那么您不能真正通过一个特定的键对它们进行索引,您需要研究不同的搜索策略,例如 binary searches .

关于php - 是否可以在不循环的情况下检查一个值是否存在于充满对象的数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12278830/

相关文章:

PHP 数组和引用传递

javascript - 将数组中的相似术语分组并写入 HTML 表

php - SQL查询按每日销量顺序显示所有产品

C - 战列舰阵列

javascript - JavaScript 中的文本对齐函数

php - Yii 框架 - 某些文件夹中的文件 ".yii"是什么

python - 在平面上而不是轴上对 3d numpy 数组求和

Swift - 从 GADBannerView 扩展后出现无法识别的选择器错误

php - 如何在 Laravel Controller 中使用方法重载?

python-3.x - 如何使多个对象同时工作?