从数组属性获取数据

时间:2018-09-13 10:38:38

标签: php laravel laravel-5

我有一个查询:

$stockBook = DB::select(DB::Raw(" my query"));
dump($stockBook);

我的o / p:

array:1 [▼
  0 => {#533 ▼
    +"BOOKID": "1"
    +"REMAINING": 17.0
  }
]

我想检索REMAINING属性数据,但出现错误。我试过了:

$remain_ = $stockBook[1]['REMAINING'];
Undefined offset: 1

我又尝试了

$remain_ = $stockBook->REMAINING;
Trying to get property 'REMAINING' of non-object

如何获取REMAINING属性的值?

5 个答案:

答案 0 :(得分:6)

如果数组中只有单个对象,则可以使用

$arr = array:1 [▼
            0 => {#533 ▼
                "BOOKID": "1"
                "REMAINING": 17.0
            }
        ]

$object = collect($arr);
$item = $object->first();
dd($item->REMAINING);

但是,如果数组中有多个对象,请使用此

$arr = array:1 [▼
            0 => {#533 ▼
                "BOOKID": "1"
                "REMAINING": 17.0
            },
            1 => {#533 ▼
                "BOOKID": "1"
                "REMAINING": 17.0
            }
        ]
$object = collect($arr);
$list = $object->pluck("REMAINING");
dd($list);

通过上面的示例,您将从阵列对象中获取所有剩余物的列表。

希望这会对您有所帮助。

答案 1 :(得分:0)

数组计数从0开始,因此$ array [0]是第一个元素,而不是$ array [1]。

$stockBook = (array)$stockBook;
$remain_ = $stockBook[0]['REMAINING'];

答案 2 :(得分:0)

如果这是您的数据结构

array:1 [▼
  0 => {#533 ▼
    +"BOOKID": "1"
    +"REMAINING": 17.0
  }
]

这就是你要做的

$remain_ = $stockBook[1]['REMAINING'];
    Undefined offset: 1

然后,错误消息说明问题的第一部分。您正在尝试访问只有一个索引为 0 的元素的数组中索引为 1 的元素。数组从零开始。也就是说,第一个元素是 0 ,第二个元素是 1 等。因此,您尝试访问的元素不存在。

第二期,根据您的评论

  

当我执行$ remain_ =时,不能将stdClass类型的对象用作数组   $ stockBook [0] ['REMAINING'];

表示数组中的每个元素都是一个对象。 因此,要获取数组中索引为 0 的对象的REMAINING属性,就可以做到。

echo $stockBook[0]->REMAINING; // would print "17.0"

答案 3 :(得分:0)

尝试一下:

$stockBook[0]->REMAINING;
  

如果要从数组中检索元素,请使用[]

     

如果要从对象中检索元素,请使用->

在您的示例中,我们看到您有php对象数组, 那么您应该同时使用两者。

答案 4 :(得分:0)

    foreach((array)$stockBook as $key => $value){  // $stockBook or $stockBook[0]
        var_dump($key, $value);
    }
    // or
    var_dump($stockBook->BOOKID, $stockBook->REMAINING); // $stockBook or $stockBook[0]