所以我有一个像这样的JSON
{
orderID: "8",
.....
OrderLines: {
OrderLine: [
{
orderLineID: "42",
quantity: "25",
price: "0.69",
originalPrice: "0.69",
checkedIn: "2",
numReceived: "0",
timeStamp: "2015-01-03T19:37:38+00:00",
orderID: "8",
itemID: "43944"
},
{
orderLineID: "44",
quantity: "75",
price: "0.69",
originalPrice: "0.69",
checkedIn: "25",
numReceived: "0",
timeStamp: "2015-01-07T20:07:29+00:00",
orderID: "8",
itemID: "43948"
},
...
]
}
}
但是当它只有一个orderLine看起来像这样
{
orderID: "20",
....
OrderLines: {
OrderLine: {
orderLineID: "118",
quantity: "24",
price: "9",
originalPrice: "9",
checkedIn: "44",
numReceived: "0",
timeStamp: "2015-01-20T19:22:54+00:00",
orderID: "20",
itemID: "37826"
}
}
}
当我在第一种情况下做foreach时它会给我正确的结果(我从每个订单行获得所需的数据),但是当它只是订单中的一个项目时,它会通过该数组1个订单行并给我错误的数据。
foreach ($orderLines['OrderLine'] as $orderLine) {
echo $orderLine['quantity'];
echo $orderLine['numReceived'];
}
我应该怎么知道当它只有1个命令从这个数组中给我正确的行时?
答案 0 :(得分:1)
假设您已经使用json_decode()
将此JSON转换为PHP数组/对象,您可以检查OrderLine是否是一个数组,并且只检查它是否为循环情况下:
if (is_array($orderLines['OrderLine']) {
foreach ($orderLines['OrderLine'] as $orderLine) {
echo $orderLine->quantity;
echo $orderLine->numReceived;
}
} else {
echo $orderLines['OrderLine']->quantity;
echo $orderLines['OrderLine']->numReceived;
}