Php 检查关联数组的特定键中是否存在重复值
我有一个关联数组,它有两个相同id的不同价格。 随它去吧Php 检查关联数组的特定键中是否存在重复值,php,arrays,associative-array,Php,Arrays,Associative Array,我有一个关联数组,它有两个相同id的不同价格。 随它去吧 Array ( [0] => Array ( [price] => 3800 [id] => 400015 ) [1] => Array ( [price] => 3700 [id] => 400015 ) [2] => Array ( [price] => 3300 [id] => 400018 ) [3] => Array
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
您可以循环数组并创建新数组,这将很容易创建要显示的输出
$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/>';
}
$newArray=array();
foreach($main作为$key=>$val){
$newArray[$val['id'][]=$val['price'];
}
foreach($newArray作为$key=>$val){
排序($val,1);
回显'id:'.$key',Price='。内爆('-',$val)。'
;
}
在阵列上循环并打印出相应的id
和价格
。不太确定你在用减价法做什么,但这会给你你所需要的
$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 />';
}
$array=array(array('price'=>3800,'id'=>40015),
数组('price'=>3700,'id'=>40001),
阵列('price'=>3800,'id'=>400015),
阵列('price'=>3300,'id'=>400018),
数组('price'=>3000,'id'=>400018),
数组('price'=>3100,'id'=>400020),
数组('price'=>3400,'id'=>400020));
asort($阵列);
foreach($key=>$value的数组)
{
回显'id:'.$value['id'.',Price='.$value['Price'.'。
;
}
仅显示一点差异,并使用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($data,function($a,$b){return$a['price']]$b['price'];});
$maxPrices=array_列($data,'price,'id');
usort($data,function($a,$b){返回$b['price']$a['price'];});
$minPrices=array_列($data,'price,'id');
foreach($minPrices作为$id=>$minPrice){
echo'id:',$id',Price=',$minPrice',-',$maxPrices[$id],PHP_EOL;
}
这使用usort()
以最高价格订购阵列(使用新的“spaceship”操作符);然后array\u column()
创建一个id和max prices数组,如果存在匹配的id,那么价格将被前面的值覆盖,这样只有与每个id
匹配的最高值保留在$maxPrices
数组中;然后对最小值执行类似的操作
最后,循环遍历min数组,依次获取每个id和最小价格,并进行id查找以获得要显示的最大价格
请注意,如果array_列不支持,则使用spaceship操作符确实需要在下面使用PHP7
$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>';
}
$arr=Array('0'=>Array('price'=>3800,'id'=>400015),
'1'=>数组('price'=>3700,'id'=>400015),
'2'=>阵列('price'=>3300,'id'=>400018),
'3'=>数组('price'=>3000,'id'=>400018),
'4'=>数组('price'=>3100,'id'=>400020),
'5'=>数组('price'=>3400,'id'=>400020),);
$new_arr=array();
foreach($arr作为$key=>$row){
如果(isset($new_arr[$row['id']])){
$new_arr[$row['id']]=$new_arr[$row['id']].-'.$row['price'];
}否则{
$new_arr[$row['id']]=$row['price'];
}
}
foreach($key=>$row的新数组){
回显'id:'.$key',Price='.$row.'
';
}
在循环中循环数组,并将元素作为Id的键和各自Id的Prince。这不是价格减法,我正在尝试将价格值从低到高排序。我编辑了我的帖子,现在它在打印之前按价格对数组排序。不仅仅是排序,我需要显示单个id
的价格,它将按照它们在数组中的顺序返回值,但是,我需要对价格值进行排序too@VyshnaviSamudrala-在内爆之前,您可以在第二个循环中短取$val,以正确的顺序显示范围:$val=short($val,1)@VyshnaviSamudrala-我已经编辑了答案,您可以检查它以进行排序。现在它正在对数组中的每个值进行排序,不仅是具有相同id的值非常完美,而且,我必须对价格值进行排序以更新if语句:$new_arr[$row['id']=($new_arr[$row['id']]完美!非常感谢!