Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP检索二维关联数组中的最小值_Php_Arrays - Fatal编程技术网

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 />';
}