JSON数组中的对象 - 无法获取multidimenson数组

时间:2017-11-14 14:25:53

标签: php arrays json

我有一个带有这样的字符串的JSON文件:

[{"Ean":"","Barcode":"010258100139","Bezeichnung":"Alia","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":129.90,"Vk":129.90}]

使用PHP我尝试将其放入数组中,以便获取数据:

$jsonarray = json_decode($jsonfile);
$jsonarray = json_decode(json_encode($jsonarray), true);
var_dump( $jsonarray );

我得到的是:

array (size=3)
   0 => 
   array (size=8)
     'Ean' => string '' (length=0)
     'Barcode' => string '010258100139' (length=12)
     'Bezeichnung' => string 'Alia' (length=4)
     'Bestaende' => 
         array (size=1)
            0 => 
              array (size=5)
                  ...
     'Bestand' => int 1
     'Dispo' => int 0
     'Uvp' => float 129.9
     'Vk' => float 129.9

就是这样!我从这里尝试了很多嵌套对象的例子。 如果我尝试获取像

这样的数据
echo $jsonarray[0]['Barcode'];

我的条形码字符串没有问题。但是“数组(大小= 5)”中的数据我无法访问。 我尝试了很多东西,比如嵌套的foreach循环,这里的函数就像“object_to_array”,“json_encode2”等等。

任何人都可以给我一个如何获取它的提示吗?我试着得到“”Menge“:1”。

提前致谢。 Tyv

1 个答案:

答案 0 :(得分:1)

你真的只需要一个json_decode,就像这样:

$data = '[{"Ean":"","Barcode":"010258100139","Bezeichnung":"Alia","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":129.90,"Vk":129.90}]';

$jsonarray = json_decode($data,true);

当你打印出来时,你会得到:

print_r($jsonarray);// I use print_r as its output looks more like how you use it

Array
(
    [0] => Array
        (
            [Ean] => 
            [Barcode] => 010258100139
            [Bezeichnung] => Alia
            [Bestaende] => Array
                (
                    [0] => Array
                        (
                            [Filiale] => 1
                            [FilialeBez] => Laden
                            [Menge] => 1
                            [Gln] => 
                            [Dispo] => 0
                        )
                )
            [Bestand] => 1
            [Dispo] => 0
            [Uvp] => 129.9
            [Vk] => 129.9
        )
)

因此,从那里,您可以看到如何获得某些数据点。例如,你想要Bestaende的第一个数据数组,所以你可以把它当作:

$jsonarray['0']['Bestaende']['0']; // for the whole group
$jsonarray['0']['Bestaende']['0']['Menge']; // for specific items

如果你在Bestaende下有多个小组,那么你可以循环他们做你需要做的每个小组:

foreach($jsonarray['0']['Bestaende'] as $idx => $Bestaende) {
    $Bestaende['Menge']; // to use that specific data of that group this loop
}