我有一个关联数组,有两个不同的价格和相同的ID。 让它成为......
Array ( [0] => Array ( [price] => 3800 [id] => 400015 )
[1] => Array ( [price] => 3700 [id] => 400015 )
[2] => Array ( [price] => 3300 [id] => 400018 )
[3] => Array ( [price] => 3000 [id] => 400018 )
[4] => Array ( [price] => 3100 [id] => 400020 )
[5] => Array ( [price] => 3400 [id] => 400020 ))
我需要将它们显示为
id:400015, Price=3800-3700
id:400018, Price=3000-3600
id:400020, Price=3100-3400
答案 0 :(得分:3)
$arr = Array ( '0' => Array ( 'price' => 3800, 'id' => 400015 ) ,
'1' => Array ( 'price' => 3700, 'id' => 400015 ),
'2' => Array ( 'price' => 3300, 'id' => 400018 ),
'3' => Array ( 'price' => 3000, 'id' => 400018 ),
'4' => Array ( 'price' => 3100, 'id' => 400020 ),
'5' => Array ( 'price' => 3400, 'id' => 400020 ),);
$new_arr =array();
foreach($arr as $key=>$row){
if(isset($new_arr[$row['id']])){
$new_arr[$row['id']]= $new_arr[$row['id']].'-'.$row['price'];
}else{
$new_arr[$row['id']]=$row['price'];
}
}
foreach($new_arr as $key=>$row){
echo 'id:'.$key.', Price = '.$row.'<br>';
}
答案 1 :(得分:2)
您可以循环数组并创建新数组,这将很容易创建您想要显示的输出
$newArray = array();
foreach($main as $key=>$val){
$newArray[$val['id']][] = $val['price'];
}
foreach ($newArray as $key=>$val){
sort($val,1);
echo 'id: '.$key.', Price='.implode('-', $val).'<br/>';
}
答案 2 :(得分:1)
在数组上循环并打印出相应的id
和price
。不太清楚你在做什么减价,但这应该给你你需要的东西。
$array = array(array('price'=>3800, 'id'=>40015),
array('price'=>3700 , 'id'=>40001),
array('price'=>3800, 'id'=>400015),
array('price'=>3300 , 'id'=>400018),
array('price'=>3000 , 'id'=>400018),
array('price'=>3100 , 'id'=>400020),
array('price'=>3400 , 'id'=>400020));
asort($array);
foreach ($array as $key => $value)
{
echo 'id: '.$value['id'].', Price='.$value['price'].'<br />';
}
答案 3 :(得分:1)
只是为了显示一点方差,并使用PHP7功能:
usort($data, function($a, $b) { return $a['price'] <=> $b['price']; });
$maxPrices = array_column($data, 'price', 'id');
usort($data, function($a, $b) { return $b['price'] <=> $a['price']; });
$minPrices = array_column($data, 'price', 'id');
foreach($minPrices as $id => $minPrice) {
echo 'id:', $id, ', Price=', $minPrice, '-', $maxPrices[$id], PHP_EOL;
}
这使用usort()
按最高价格对阵列进行排序(使用新的&#34;太空船&#34;运算符);然后array_column()
创建一系列ID和最高价格,如同匹配的ID一样,那么价格将被之前的值覆盖,以便只有最高值匹配{{1} 1}}保留在id
数组中;然后对最小值做同样的事情。
最后,循环迭代min数组,依次获取每个id和最小价格,并进行id查找以获得最高价格
请注意,使用太空船运营商需要PHP7