在json对象PHP上搜索项



我有这种json对象,我试图在sales->products->id下搜索一个项目,但我无法使其工作。我希望有人能帮我。谢谢!

"sales": [
{
"ID": 123456,
"transaction_id": "123456789",
"key": "sdawa57sd547sad4sadx54ad",
"subtotal": 20,
"tax": "0",
"fees": null,
"total": "20",
"gateway": "paypal",
"email": "email@email.com",
"date": "2018-08-01 13:13:55",
"discounts": null,
"products": [
{
"id": 1234,
"quantity": 1,
"name": "Product 1",
"price": 20,
"price_name": ""
}
]
}

这是我使用的代码:

$content =     file_get_contents($url);
$results= json_decode($content, TRUE);
foreach($results->sales as $item)
{
if($item->products->id == "1234")
{
echo $item->products->name;
}
}

因为您已经将第二个参数true传递给json_decode,所以您的$results变量是一个数组,所以您需要这样访问它:

foreach($results['sales'] as $item) {
foreach ($item['products'] as $product) {
if ($product['id'] == '1234') echo $product['name'];
}
}

输出:

Product 1

3v4l.org 上的演示

如果你想找到哪个销售部门有产品,那么你应该做这个

$results= json_decode($content);
$productid = "1234"; //product you want to search for
foreach($result->sales as $sale)
{
$keys = array_keys(array_column($sale->products, 'id'), $product_id);
if(!empty($keys))
$saleIDs[] = $sale->ID;
}
var_dump($saleIDs); //contains all the sale IDs that have the product 

阅读有关array_keys和array_column的信息。

最新更新