如何解析标准对象以获取特定数据
How to parse an std object to get specific data
我尝试将此结果转换为数组,我使用了 json_decode() 但我总是得到 null 然后我使用 Service_json() 并解决了问题。
在那之后,我得到了这个结果,但现在我很难获得一些特定的数据,如类别、名称、品牌及其值,结果是空的。
这是数组:
array(1) {
["hits"]=>
object(stdClass)#3 (1) {
["hits"]=>
array(7) {
[0]=>
object(stdClass)#4 (2) {
["_id"]=>
string(20) "kN5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#5 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(29) "Bonbons parfums fruits MENTOS"
}
}
[1]=>
object(stdClass)#6 (2) {
["_id"]=>
string(20) "kd5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#7 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(21) "Bonbons menthe MENTOS"
}
}
[2]=>
object(stdClass)#8 (2) {
["_id"]=>
string(20) "kt5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#9 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(37) "Bonbons caramel/chocolat blanc MENTOS"
}
}
[3]=>
object(stdClass)#10 (2) {
["_id"]=>
string(20) "k95iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#11 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "Mentos"
["nom"]=>
string(31) "Bonbons caramel/chocolat MENTOS"
}
}
[4]=>
object(stdClass)#12 (2) {
["_id"]=>
string(20) "lN5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#13 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(28) "Bonbons menthe sucres MENTOS"
}
}
[5]=>
object(stdClass)#14 (2) {
["_id"]=>
string(20) "ld5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#15 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(31) "Bonbons framboise orange MENTOS"
}
}
[6]=>
object(stdClass)#16 (2) {
["_id"]=>
string(20) "lt5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#17 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(26) "Bonbons pomme verte MENTOS"
}
}
}
}
}
如何解析此数组以获取类别名称和品牌及其值?
未测试,但我想这就是您使用 foreach
、
获取内部元素值所需要的
foreach($result['hits']->hits as $key=>$value){
echo $value->_source->categories, $value->_source->marque, $value->_source->nom.PHP_EOL;
}
请参阅下面的示例,了解如何处理您的情况。
class Person implements JsonSerializable
{
protected $id;
protected $name;
public function __construct(array $data)
{
$this->id = $data['id'];
$this->name = $data['name'];
}
public function getId()
{
return $this->id;
}
public function getName()
{
return $this->name;
}
public function jsonSerialize()
{
return
[
'id' => $this->getId(),
'name' => $this->getName()
];
}
}
$person = new Person(array('id' => 1, 'name' => 'Amir'));
echo json_encode($person,JSON_FORCE_OBJECT);
获取字符串形式的 json 结果,以便能够遍历,执行如下操作:
$json = json_decode($json);
遍历对象并使用类似以下内容获取其成员:
foreach($json as $obj){
echo $obj->name;
.....
}
我希望这个工作流能帮助您实现您的愿望。
我尝试将此结果转换为数组,我使用了 json_decode() 但我总是得到 null 然后我使用 Service_json() 并解决了问题。
在那之后,我得到了这个结果,但现在我很难获得一些特定的数据,如类别、名称、品牌及其值,结果是空的。
这是数组:
array(1) {
["hits"]=>
object(stdClass)#3 (1) {
["hits"]=>
array(7) {
[0]=>
object(stdClass)#4 (2) {
["_id"]=>
string(20) "kN5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#5 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(29) "Bonbons parfums fruits MENTOS"
}
}
[1]=>
object(stdClass)#6 (2) {
["_id"]=>
string(20) "kd5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#7 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(21) "Bonbons menthe MENTOS"
}
}
[2]=>
object(stdClass)#8 (2) {
["_id"]=>
string(20) "kt5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#9 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(37) "Bonbons caramel/chocolat blanc MENTOS"
}
}
[3]=>
object(stdClass)#10 (2) {
["_id"]=>
string(20) "k95iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#11 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "Mentos"
["nom"]=>
string(31) "Bonbons caramel/chocolat MENTOS"
}
}
[4]=>
object(stdClass)#12 (2) {
["_id"]=>
string(20) "lN5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#13 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(28) "Bonbons menthe sucres MENTOS"
}
}
[5]=>
object(stdClass)#14 (2) {
["_id"]=>
string(20) "ld5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#15 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(31) "Bonbons framboise orange MENTOS"
}
}
[6]=>
object(stdClass)#16 (2) {
["_id"]=>
string(20) "lt5iEXIBfVAlCluoT3sT"
["_source"]=>
object(stdClass)#17 (3) {
["categorie"]=>
string(7) "Bonbons"
["marque"]=>
string(6) "MENTOS"
["nom"]=>
string(26) "Bonbons pomme verte MENTOS"
}
}
}
}
}
如何解析此数组以获取类别名称和品牌及其值?
未测试,但我想这就是您使用 foreach
、
foreach($result['hits']->hits as $key=>$value){
echo $value->_source->categories, $value->_source->marque, $value->_source->nom.PHP_EOL;
}
请参阅下面的示例,了解如何处理您的情况。
class Person implements JsonSerializable
{
protected $id;
protected $name;
public function __construct(array $data)
{
$this->id = $data['id'];
$this->name = $data['name'];
}
public function getId()
{
return $this->id;
}
public function getName()
{
return $this->name;
}
public function jsonSerialize()
{
return
[
'id' => $this->getId(),
'name' => $this->getName()
];
}
}
$person = new Person(array('id' => 1, 'name' => 'Amir'));
echo json_encode($person,JSON_FORCE_OBJECT);
获取字符串形式的 json 结果,以便能够遍历,执行如下操作:
$json = json_decode($json);
遍历对象并使用类似以下内容获取其成员:
foreach($json as $obj){
echo $obj->name;
.....
}
我希望这个工作流能帮助您实现您的愿望。