循环json数组并在php中返回值


loop json array and return values in php

我使用一个库将本地WebSQL数据库同步到服务器https://github.com/orbitaloop/WebSqlSync.我使用PHP:5.4.7这是json-var$json

{
"info":"",
"data":{
    "clientes":[],
    "conceptos_gastos":[],
    "formaspago":[{
        "idFormaPago":7,
        "FormaPago":"quwuw",
        "Dias":1,
        "Cuotas":1,
        "last_sync_date":null
    }],
    "listaprecios":[],
    "producto":[],
    "repartidores":[],
    "tipodocumento":[],
    "vehiculos":[],
    "zonas":[]
}
}

当我试图获得值时

$js=json_decode($json,true);
foreach ($js['formaspago'] as $row ) {
   echo $row["Formapago"];
}

我得到这个错误:

为foreach 提供的参数无效

任何帮助都将不胜感激

使用json_decode

//array
$data = json_decode($json, true);
foreach($data["data"]["formaspago"] as $row) {
    echo $row["Formapago"];
}

谢谢@JimL的提示。

您没有将有效数组传递给foreach循环。然而,即使您解析了提供的json,foreach也不会工作,因为它是一个对象而不是数组。

$json = '{
"info":"",
"data":{
    "clientes":[],
    "conceptos_gastos":[],
    "formaspago":[{
        "idFormaPago":7,
        "FormaPago":"quwuw",
        "Dias":1,
        "Cuotas":1,
        "last_sync_date":null
    }],
    "listaprecios":[],
    "producto":[],
    "repartidores":[],
    "tipodocumento":[],
    "vehiculos":[],
    "zonas":[]
}
}';
$obj = json_decode($json);

print $obj->info将返回一个空字符串。

$obj->data是一个具有各种属性的对象,其中一些属性是空数组。将这些传递到foreach应该可以。即

foreach($obj->data->clients as client) {
  // Do something here
}

此外,$obj->data->formaspago在阵列中正好具有一个元素,该元素是对象。您可以使用foreach循环访问此对象:

foreach($obj->data->formaspago as formaspago) {
  print formaspago->idFormaPago; // Will print 7
  print formaspago->FormaPago; // Will print "quwuw"
  print formaspago->Dias; // Will print 1
  print formaspago->Cuotas; // Will print 1
  print formaspago->last_sync_date; // Will print nothing
}