我在一个网站上工作,在这个网站上我想从JSON对象数组中删除重复的字段。
我拥有的JSON对象数组是:
"rental_rates": [{
"rate_id": 170,
"uuid": "a3a14d20-63d1-11e8-b047-89e5d3a9513d",
"owner_id": 38,
"item_id": 394,
"name": "daily",
"term": "daily",
"currency": "dollars",
"rate": "56.00",
"min_charge": "56.00",
"created_at": "2018-05-30 06:20:43",
"updated_at": "2018-05-30 06:21:07"
}, {
"rate_id": 172,
"uuid": "a3a1c500-63d1-11e8-8740-8925bbb8ada8",
"owner_id": 38,
"item_id": 394,
"name": "weekly",
"term": "weekly",
"currency": "dollars",
"rate": "677.00",
"min_charge": "56.00",
"created_at": "2018-05-30 06:21:00",
"updated_at": "2018-05-30 06:21:07"
}],
我用来从JSON对象数组中提取字段/值的代码是:
foreach ($data['item']->rental_rates as $rental_rate)
{
echo '<span class="rental_term" style="text-align:right">'."minimum".'</span>';
echo '<span class="rental_price" style="text-align:right">$'.floatval($rental_rate->min_charge).'</span><br>';
}
上面的代码拉取以下数据,我只想显示一个数据。
minimum $56
minimum $56
问题陈述:
我想知道我需要在foreach循环中做什么更改,以便它只提取一个字段和值,如下所示,
minimum $56
发布于 2018-08-30 03:27:50
两种方式。存储已经显示的内容并检查它:
$shown = array();
foreach ($data['item']->rental_rates as $rental_rate)
{
if(!in_array($rental_rate->min_charge, $shown)) {
$shown[] = $rental_rate->min_charge;
echo '<span class="rental_term" style="text-align:right">'."minimum".'</span>';
echo '<span class="rental_price" style="text-align:right">$'.floatval($rental_rate->min_charge).'</span><br>';
}
}
或者创建一个由min_value
索引的数组,这样就只有一个数组(只适用于>= 7.0.0版本的对象):
$rates = array_column($data['item']->rental_rates, null, 'min_charge');
foreach $rates as $rental_rate)
{
echo '<span class="rental_term" style="text-align:right">'."minimum".'</span>';
echo '<span class="rental_price" style="text-align:right">$'.floatval($rental_rate->min_charge).'</span><br>';
}
对于PHP < 7.0.0,将JSON解码为传递true
作为第二个参数的数组,并在上面的代码中使用$data['item']['rental_rates']
和$rental_rate['min_charge']
。
https://stackoverflow.com/questions/52084583
复制相似问题