PHP检索二维关联数组中的最小值
我有以下数组:PHP检索二维关联数组中的最小值,php,arrays,Php,Arrays,我有以下数组: Array ( [0] => Array ( [id] => 1 [price1] => 16 [price2] => 10 [price3] => 3 ) [1] => Array ( [id] => 2
Array
(
[0] => Array
(
[id] => 1
[price1] => 16
[price2] => 10
[price3] => 3
)
[1] => Array
(
[id] => 2
[price1] => 19
[price2] => 2
[price3] => 6
)
[2] => Array
(
[id] => 3
[price1] => 14
[price2] => 32
[price3] => 1
)
)
我想从独立于其他行的每行中获得较低的价格。例如,对于id=1
来说,较低的价格是3
,对于id=2
来说,较低的价格是2
,依此类推。任何关于如何实现自动化的想法。尝试一下可能会有所帮助:
$price = array();
foreach( $array as $key=>$each ){
$low = $each['price1'];
if( $each['price2'] < $low ){
$low = $each['price2'];
}
if( $each['price3'] < $low ){
$low = $each['price3'];
}
$price[$key] = $low;
}
print_r( $price );
$price=array();
foreach($key=>$each的数组){
$low=$each['price1'];
如果($each['price2']<$low){
$low=$each['price2'];
}
如果($each['price3']<$low){
$low=$each['price3'];
}
$price[$key]=$low;
}
打印(价格);
试试这个:
$newarray = array();
foreach ($array as $row)
{
$id = $row['id'];
unset($row['id']);
$newarray[$id] = min($row);
}
好了$newarray
现在包含每行的id=>{lowest value}
。可能的解决方案:
foreach($array as$item)
{
$lowestKey='';
foreach($key=>$value的项目)
{
如果(STRPO($key,'price')==0)
{
如果($lowerstkey=='')
{
$lowestKey=$key;
}
其他的
{
如果($value<$item[$lowerstkey])
{
$lowestKey=$key;
}
}
}
}
回显“id最低”。$item['id'].:'。$item[$lowestKey];
}
这种方法的好处是:
- 价格键不必是连续的,甚至不必是数字键。任何以
开头的键都被视为价格price
- 可以有无限的价格,但不限于三个
- 数组中存储的任何其他数据都不会影响它或破坏任何内容。因此,例如,如果将来添加了
键,则不会影响代码或需要进行任何修改说明
$prices = array(0 => array ( 'id' => 1,
'price1' => 16,
'price2' => 10,
'price3' => 3
),
1 => array ( 'id' => 2,
'price1' => 19,
'price2' => 2,
'price3' => 6
),
2 => array ( 'id' => 3,
'price1' => 14,
'price2' => 32,
'price3' => 1
)
);
foreach($prices as $price) {
$tmp_arr = array(0=> $price['price1'], 1=> $price['price2'], 2=> $price['price3']);
sort($tmp_arr);
$arr_low_price = array('id'=> $price['id'], 'low_price' => $tmp_arr[0]);
print_r($arr_low_price);
echo '<br />';
}
$prices=array(0=>array('id'=>1,
“价格1”=>16,
“价格2”=>10,
“价格3”=>3
),
1=>数组('id'=>2,
“价格1”=>19,
“价格2”=>2,
“价格3”=>6
),
2=>数组('id'=>3,
“价格1”=>14,
“价格2”=>32,
“价格3”=>1
)
);
foreach(价格为$price){
$tmp_arr=array(0=>$price['price1'],1=>$price['price2'],2=>$price['price3']);
排序($tmp_arr);
$arr_low_price=array('id'=>$price['id'],'low_price'=>$tmp_arr[0]);
打印(低价);
回声“
”;
}
您可能希望在foreach
循环中使用min()。非常感谢,它工作得很好
$r = array_reduce($array, function(&$result, $item) {
$key = $item['id'];
unset($item['id']);
$result[$key] = min($item);
return $result;
});
$prices = array(0 => array ( 'id' => 1,
'price1' => 16,
'price2' => 10,
'price3' => 3
),
1 => array ( 'id' => 2,
'price1' => 19,
'price2' => 2,
'price3' => 6
),
2 => array ( 'id' => 3,
'price1' => 14,
'price2' => 32,
'price3' => 1
)
);
foreach($prices as $price) {
$tmp_arr = array(0=> $price['price1'], 1=> $price['price2'], 2=> $price['price3']);
sort($tmp_arr);
$arr_low_price = array('id'=> $price['id'], 'low_price' => $tmp_arr[0]);
print_r($arr_low_price);
echo '<br />';
}