【问题标题】:How to get object(stdClass) from array without the key?如何在没有密钥的情况下从数组中获取对象(stdClass)?
【发布时间】:2014-04-14 04:16:08
【问题描述】:

我看了How to get object(stdClass) from array,但答案对我帮助不大。

这是一个小例子:

Array
(
    [25] => stdClass Object
        (
            [id] => 25
            [name] => FOO
        )

    [27] => stdClass Object
        (
            [id] => 27
            [name] => BAR
        )
)

注意位置和ID是一样的,所以不知道具体是什么位置,所以不能调用

// since idk how many
$items = array_shift(array_values($array));
$items->name;

也不

// since idk the position
$items = array_shift(array_values($array[0]));
$items->name;

我能找到的唯一解决方案是使用foreach

foreach($array as $item){
    echo '<pre>';
    print_r($item->name);
    echo '</pre>';
}

但这是我的最后一个资源,因为我有 3 个子数组,不仅是 $array,还有 $array['foo'] && $array['bar'] && $array['foobar'],每个子数组里面都是上面的结构。除此之外,我需要使用if(count($array['foo']) &gt; 0 来测试内容是否存在。

【问题讨论】:

  • 你到底想在这里做什么?我不明白这个问题。 “位置与 ID 相同”,所以你确实知道位置 ($items[25]-&gt;name)。
  • @RocketHazmat 我想读取对象数组(例如 $item->name)。但是,我知道什么是位置,阅读它的唯一方法是在 foreach 中阅读它。
  • 你是什么意思“Idk what's position”? $array[25]-&gt;name 不行吗?
  • @RocketHazmat [25] 对我来说是一个未知的值,它是动态的。
  • 如果不是索引,您使用什么值?这就是为什么我认为这个问题不清楚。你想创建一个返回$array[25] 的函数get_item_by_nam("FOO") 吗?

标签: php performance arrays object


【解决方案1】:

不确定,但我猜您想知道数组的键(如您所说的位置)是什么。为此使用 array_keys:

$keys = array_keys($array);

// $keys is now array(25, 27)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多