gpt4 book ai didi

php - 选择 PHP 数组中值最低的项

转载 作者:行者123 更新时间:2023-12-02 21:02:21 24 4
gpt4 key购买 nike

我有一个名为 $products 的数组。

如果我对此数组执行 print_r,我会得到以下输出:

Array
(
[0] => Array
(
[0] => 2
[counter] => 2
[1] => Oranges
[item] => Oranges
)

[1] => Array
(
[0] => 3
[counter] => 3
[1] => Bananas
[item] => Bananas
)

[2] => Array
(
[0] => 1
[counter] => 1
[1] => Apples
[item] => Apples
)

[3] => Array
(
[0] => 1
[counter] => 1
[1] => Pears
[item] => Pears
)
)

我希望能够列出具有最低 'counter' 值的项目名称,如果存在重复的最低计数器值(如上面的示例中的苹果和梨),则仅随机选择一个(必须随机选择)。

有人能帮我解决这个问题吗?不幸的是,到目前为止我还没有找到合适的解决方案。提前致谢!

最佳答案

在这种情况下,我个人会使用 usort,这样如果两个元素具有相同的计数器,您可以稍后预见到。

此外,您可以通过 mysql 查询轻松解决该问题,但我将这样做:

<?php

$products = array(
array(
"counter" => 2,
"item" => "Oranges"
),
array(
"counter" => 3,
"item" => "Bananas"
),
array(
"counter" => 1,
"item" => "Apples"
),
array(
"counter" => 1,
"item" => "Pears"
)
);

usort($products, function($previous, $next) {
return $previous["counter"] > $next["counter"] ? 1 : -1;
});

echo "Lowest counter is: {$products[0]['item']}";

?>

说明:

usort($products, function($previous, $next) {
return $previous["counter"] > $next["counter"] ? 1 : -1;
});

usort 以 $products (数组)作为数组来获取并一次循环两个项目(上一个和下一个),return 语句检查前一个元素的计数器是否高于下一个元素,如果是,则将其放入它在它之后,否则在它之前。

最后,您将得到从最低计数器到最高计数器排序的数组元素。

我还建议您稍后获取具有相同计数器值的元素,如果在这种情况下,您有两个元素都较低,如下所示:

$products = array(
array(
"counter" => 2,
"item" => "Oranges"
),
array(
"counter" => 3,
"item" => "Bananas"
),
array(
"counter" => 1,
"item" => "Apples"
),
array(
"counter" => 1,
"item" => "Pears"
)
);

usort($products, function($previous, $next) {
return $previous["counter"] > $next["counter"] ? 1 : -1;
});


$lowest = $products[0]["counter"];

$filtered = array_filter($products, function($element) use ($lowest) {
return $element["counter"] === $lowest;
});

echo $filtered[array_rand($filtered, 1)]["item"];

工作代码:

https://3v4l.org/YPAeh

关于php - 选择 PHP 数组中值最低的项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37662494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com