Php 数组中的数组中的数组-无法从JSON字符串获取数据

Php 数组中的数组中的数组-无法从JSON字符串获取数据,php,arrays,json,Php,Arrays,Json,原职: 我提供的数据只有一行。我有许多相同的行,有不同的“Bestaende”和“Menge”: 您描述的foreach我理解,但它没有按预期工作 $jsonarray = json_decode($jsonfile,true); echo 'Array 0 Menge: '.$jsonarray['0']['Bestaende']['0']['Menge'].'<br>'; echo 'Array 1 Menge: '.$jsonarray['1']['Bestaende']['

原职:

我提供的数据只有一行。我有许多相同的行,有不同的“Bestaende”和“Menge”:

您描述的
foreach
我理解,但它没有按预期工作

$jsonarray = json_decode($jsonfile,true);
echo 'Array 0 Menge: '.$jsonarray['0']['Bestaende']['0']['Menge'].'<br>'; 
echo 'Array 1 Menge: '.$jsonarray['1']['Bestaende']['0']['Menge'].'<br>'; 
echo 'Array 2 Menge: '.$jsonarray['2']['Bestaende']['0']['Menge'].'<br>'; 
echo 'Array 3 Menge: '.$jsonarray['3']['Bestaende']['0']['Menge'].'<br>'; 
好的。但是当我尝试
foreach
it时(因为我有一个基本数据列表),输出只有一行。我只得到一个条目“1”。没别的了

$x=0;
foreach($jsonarray[$x]['Bestaende'] as $idx => $Bestaende) {
   echo 'Print Menge: ';
   print_r($Bestaende['Menge']); 
 $x++;
}
所以我尝试在数组上循环以获取数据。结果是:

Array ( [Filiale] => 1 [FilialeBez] => Laden [Menge] => 1 [Gln] => [Dispo] => 0 )
Print Menge: 1
我对数组中的数组有问题。。。有没有更好的方法来获取我想要的数据

还是我的
foreach
循环出错了?

像这样尝试一下

foreach($jsonarray as $k=>$alldata) 
{
   foreach($alldata["Bestaende"] as $idx => $Bestaende) 
   {
       echo '<pre>';
       echo 'Print Menge: '.$Bestaende['Menge'];
       echo '</pre>';
   }
}
foreach($jsonarray作为$k=>$alldata)
{
foreach($alldata[“Bestaende”]作为$idx=>$Bestaende)
{
回声';
回显“打印菜单:”.$Bestaende['Menge'];
回声';
}
}

您只在只包含一项的
$jsonarray[0]['Bestaende']
上循环。您应该在
$jsonarray
上循环,然后从那里深入研究

Try this code..
$j = '[{"Ean":"","Barcode":"010241770148","Bezeichnung":"Richard 1516","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":269.90,"Vk":269.90},      
 {"Ean":"","Barcode":"010241770149","Bezeichnung":"Richard 1516","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":269.90,"Vk":269.90},
 {"Ean":"","Barcode":"010241770151","Bezeichnung":"Richard 1516","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":269.90,"Vk":269.90},
 {"Ean":"","Barcode":"010241770152","Bezeichnung":"Richard 1516","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":269.90,"Vk":269.90}]';

$a = json_decode($j,true);

foreach($a as $key => $value){
    if(!empty($value['Bestaende'])){
        foreach($value['Bestaende'] as $k=>$v){
             echo 'Print Menge: '.(!empty($v['Menge']) ? $v['Menge'] : '').'</br>';
        }
    }
}
试试这段代码。。
$j='[{“Ean”:““Barcode”:“010241770148”,“Bezeichung”:“Richard 1516”,“Bestaende”:[{“Filiale”:1,“FilialeBez”:“Ladden”,“Menge”:1,“Gln”:null,“Dispo”:0}],“Bestand”:1,“Dispo”:0,“Uvp”:269.90,“Vk”:269.90},
{“Ean”:“Barcode”:“010241770149”,“Bezeichung”:“Richard 1516”,“Bestaende”:[{“Filiale”:1,“FilialeBez”:“Ladden”,“Menge”:1,“Gln”:null,“Dispo”:0}],“Bestand”:1,“Dispo”:0,“Uvp”:269.90,“Vk”:269.90},
{“Ean”:“Barcode”:“01024177015”,“Bezeichung”:“Richard 1516”,“Bestaende”:[{“Filiale”:1,“FilialeBez”:“Ladden”,“Menge”:1,“Gln”:null,“Dispo”:0}],“Bestand”:1,“Dispo”:0,“Uvp”:269.90,“Vk”:269.90},
{“Ean”:“Barcode”:“010241770152”,“Bezeichung”:“Richard 1516”,“Bestaende”:[{“Filiale”:1,“FilialeBez”:“Ladden”,“Menge”:1,“Gln”:null,“Dispo”:0}],“Bestand”:1,“Dispo”:0,“Uvp”:269.90,“Vk”:269.90}];
$a=json_解码($j,true);
foreach($a作为$key=>$value){
如果(!empty($value['Bestaende'])){
foreach($value['Bestaende']为$k=>$v){
回显“Print Menge:”。(!empty($v['Menge'])?$v['Menge']:“”)。
; } } }
是的,您的foreach是错误的。
foreach($jsonarray as $k=>$alldata) 
{
   foreach($alldata["Bestaende"] as $idx => $Bestaende) 
   {
       echo '<pre>';
       echo 'Print Menge: '.$Bestaende['Menge'];
       echo '</pre>';
   }
}
foreach($jsonarray as $item) {
    echo 'Print Menge: ';
    print_r($item['Bestaende']['0']['Menge']); 
    // or even dive in deeper
    foreach ($item['Bestaende'] as $bestaende) {
        // .. $bestaende['Menge'];
    }
}
Try this code..
$j = '[{"Ean":"","Barcode":"010241770148","Bezeichnung":"Richard 1516","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":269.90,"Vk":269.90},      
 {"Ean":"","Barcode":"010241770149","Bezeichnung":"Richard 1516","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":269.90,"Vk":269.90},
 {"Ean":"","Barcode":"010241770151","Bezeichnung":"Richard 1516","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":269.90,"Vk":269.90},
 {"Ean":"","Barcode":"010241770152","Bezeichnung":"Richard 1516","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":269.90,"Vk":269.90}]';

$a = json_decode($j,true);

foreach($a as $key => $value){
    if(!empty($value['Bestaende'])){
        foreach($value['Bestaende'] as $k=>$v){
             echo 'Print Menge: '.(!empty($v['Menge']) ? $v['Menge'] : '').'</br>';
        }
    }
}