是否可以检查一个值,该值是否存在于充满对象的数组中而不会循环? [英] Is it possible to check if a value exists inside an array full of objects without looping?

查看:106
本文介绍了是否可以检查一个值,该值是否存在于充满对象的数组中而不会循环?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I Have an array holding multiple objects. Is it posible to check if a value exists in any one of the objects e.g. id->27 without looping? In a similar fashion to PHP's in_array() function. Thanks.

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

推荐答案

否.如果您经常需要快速直接查找值,则需要为其使用数组键,这些键可以快速查找.例如:

No. If you often need quick direct lookup of values, you need to use array keys for them, which are lightning fast to lookup. For example:

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

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

如果您需要通过不同的关键字来查找对象,那么您就无法真正通过一个特定的关键字为它们编制索引,那么您需要研究诸如

If you need to lookup objects by different keys, so you can't really index them by one specific key, you need to look into different search strategies like binary searches.

这篇关于是否可以检查一个值,该值是否存在于充满对象的数组中而不会循环?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆