[英]php get MIN and MAX from loop results
我有这个循环,我想知道如何在循环内获取MIN和MAX值:
foreach($result_1 as $key_1) {
if($key_1->ordering > $key_0->ordering ) {
echo $key_1->ordering;
}
}
结果: 234
想要的结果是MIN(2)和MAX(4)个值
对于功能约简方法来说,这听起来不错。 您可以使用array_reduce
函数在PHP中执行此array_reduce
:
您传入一个数组,一个回调和一个起始值,该函数将使用当前值和数组中的下一个项目调用该回调并存储结果。
php> $array = [ 6, 2, 8, 4 ];
array (
0 => 6,
1 => 2,
2 => 8,
3 => 4,
)
php> array_reduce($array, 'min', reset($array));
int(2)
php> array_reduce($array, 'max', reset($array));
int(8)
在此示例中,我分别使用min
和max
作为回调,并将第一个数组项用作起始值。
为了在数组上正确使用此函数,您可以使用匿名函数传入自定义回调:
function ($a, $b) {
return max($a->ordering, $b->ordering);
}
您只需要遍历数组一次,并对照当前的最小值/最大值检查每个值,如果值较小/较大,则将其替换。
$min = reset( $array )->ordering; // Assign any value to start (just the first in this case)
$max = reset( $array )->ordering; // Assign any value to start (just the first in this case)
foreach ( $array as $object ) {
//max
if( $object->ordering > $max ) {
$max = $object->ordering;
}
//min
if( $object->ordering < $min ) {
$min = $object->ordering;
}
}
echo $min;
echo $max;
只需使用PHP内置的min($result_1)
和max($result_1)
函数。
http://us2.php.net/max http://us2.php.net/min
编辑:
由于它是一个对象数组,请尝试使用两个临时变量来跟踪最小值和最大值。 我假设在这段代码中,您正在寻找最大和最小排序。
$min = 1000000;
$max = -1000000;
foreach($result_1 as $key_1) {
if($key_1->ordering > $max ) {
$max = $key_1->ordering;
}
else if($key_1->ordering < $min) {
$min = $key_1->ordering;
}
}
echo $min;
echo $max;
您可以采用选择排序的逻辑,并使用它来找到最小值。 我确定您可以从此代码中找出如何找到最大值。
$min = 0;
foreach($result_1 as $key_1) {
$min = $key_1->ordering
foreach($result_1 as $key_2) {
if($min > $key_2->ordering) {
$min = $key_2->ordering;
}
}
}
这是我的测试:
$data = array(
5,
6,
7,
1,
9,
11,
3
);
$min = 0;
foreach($data as $key => $value) {
$min = $value;
foreach($data as $key2 => $value2) {
if($min > $value2) {
$min = $value2;
}
}
}
echo $min . "\n"; // 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.