在PHP中从数组中获取值

在PHP中从数组中获取值,php,arrays,Php,Arrays,我对必须使用的数组有点困惑。以下阵列: print_r($myArray); 返回以下内容: Array ( [0] => stdClass Object ( [id] => 88 [label] => Bus ) [1] => stdClass Object ( [id] => 89 [label] => Bike ) [2] => stdClas

我对必须使用的数组有点困惑。以下阵列:

print_r($myArray);
返回以下内容:

Array (
    [0] => stdClass Object (
        [id] => 88
        [label] => Bus
    )
    [1] => stdClass Object (
        [id] => 89
        [label] => Bike
    )
    [2] => stdClass Object (
        [id] => 90
        [label] => Plane
    )
    [3] => stdClass Object (
        [id] => 91
        [label] => Submaine
    )
    [4] => stdClass Object (
        [id] => 92
        [label] => Boat
    )
    [5] => stdClass Object (
        [id] => 93
        [label] => Car
    )
    [6] => stdClass Object (
        [id] => 94
        [label] => Truck
    )
) 

如果我有$id=91,如何获取标签值,例如,“子线”

这将为您获取所需的对象:

$objects=array\u过滤器($myArray,function($item){return$item->id==91})


然后,只需获取所需对象的属性即可。

我认为,您必须在数组中循环

$value = '';
foreach ($myArray as $el) {
    if ($el->id === 91) { // or other number
        $value = $el->label;
        break;
    }
}
标签现在包含在
$value


1000000次迭代的基准值与AJ版本的比较():


这里有一个对象数组。我建议按id重新设置数组的键,如下所示:

$new = array();
foreach($array as $obj) {
    $new[ $obj->id ] = $new[ $obj->label ];
}

现在你有了一个很好的关联数组,你可以正常使用,例如,
echo$new[92]
将echo“Boat”

这些都是对象,因此建议使用数组过滤器而不是明显的数组循环,这将是
return$item->id==91
+1(onteria_uuuu提到的部分是这里唯一的问题)。这是一个很好的解决方案,只是速度慢得多。@AJ好吧,是的,但这并不完全不可能,是吗?如果我们假设最后一项是我们想要的,最快的解决方案是
数组_uuupop
!(我是在开玩笑,但仍然…)如果您可以更改数组的构造方式,则应该使用“id”为项目编制索引,这将更容易。然后您可以只执行
$item=$myArray[$id]
一个类正在创建这个数组,所以很不幸我不得不使用我所拥有的。但是你是对的,我希望我可以通过ID+1来发布一个基准,这非常有趣!你用什么来进行基准测试?@Matthieu我自己编写的一个快速脚本——请参阅答案中的链接。
$new = array();
foreach($array as $obj) {
    $new[ $obj->id ] = $new[ $obj->label ];
}