我有一个查询:
$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属性的值?
答案 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]