我使用库来将本地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提供的参数无效
感谢任何帮助
答案 0 :(得分:2)
//array
$data = json_decode($json, true);
foreach($data["data"]["formaspago"] as $row) {
echo $row["Formapago"];
}
感谢@JimL提示。
答案 1 :(得分:1)
您没有将有效数组传递给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
}