我使用一个库将本地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
}