【问题标题】:Getting Min and Max from Array using php [duplicate]使用php从数组中获取最小值和最大值[重复]
【发布时间】:2019-09-19 19:28:36
【问题描述】:

我在 PHP 中从数组中获取我想要的值时遇到问题

看看我的数组

 array(

  "0"=>array("id"=>"255","price"=>"2","discount"=>"1"),
  "1"=>array("id"=>"256","price"=>"2","discount"=>"3"),
  "2"=>array("id"=>"257","price"=>"2","discount"=>"4"),
  "3"=>array("id"=>"255","price"=>"3","discount"=>"5")

 );

我需要Min Price和Max Discount,这次我需要数组ID 2,也就是

"2"=>array("id"=>"257","price"=>"2","discount"=>"4"),

因为在这个数组中价格低于 2,折扣为 4,在下一条记录中你可以看到折扣高得多,即 5,但价格为 3,高于 2,因此所需的结果是子数组 id 2

请告诉我我该怎么做?

【问题讨论】:

  • 如果您按价格升序和折扣降序对数组进行排序,则结果数组将按照您之后的顺序(即array_multisort(array_column($data, "price"), SORT_ASC, array_column($data, "discount"), SORT_DESC, $data );)。然后将该数组的元素[0] 用于您之后的项目。
  • 另外,如果这是 SQL 查询的结果 - 您可以添加类似于上述排序的 ORDER BY 子句,它应该会给您相同的结果(但没有 SQL 就很难知道)跨度>

标签: php sql arrays


【解决方案1】:

请尝试使用此解决方案

$array = array(
    "0" => array("id" => "255", "price" => "2", "discount" => "1"),
    "1" => array("id" => "256", "price" => "2", "discount" => "2"),
    "2" => array("id" => "257", "price" => "2", "discount" => "4"),
    "3" => array("id" => "255", "price" => "3", "discount" => "5"),
);

$minPrice = min(array_column($array, 'price'));
$maxDiscountIndex = $maxDiscount = 0;

foreach ($array as $key => $value) {
    if ($value['price'] == $minPrice && $maxDiscount < (int) $value['discount']) {
        $maxDiscountIndex = $key;
        $maxDiscount = $value['discount'];
    }
}

echo $maxDiscountIndex; // 2

算法说明:

  • 在所有数组中查找最低价格
  • 遍历所有最低价格元素并找到最大折扣值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多