1

我使用一个库将本地 WebSQL DB 同步到服务器,特别是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 提供的参数无效

任何帮助表示赞赏

4

2 回答 2

2

使用json_decode

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

感谢@JimL 的提示。

于 2013-07-15T21:30:24.933 回答
1

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

$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应该工作。IE

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
}
于 2013-07-15T21:34:13.537 回答