【问题标题】:PHP - Get array value that isnt greater than the next array valuePHP - 获取不大于下一个数组值的数组值
【发布时间】:2019-02-11 00:37:49
【问题描述】:

在这个数组中: $array = array(6, 20, 50, 80, 100);,

我要返回没有经过一定数字的值。

例如,假设我有一个号码$number = 45;。我想从$array返回20

...如果我有一个数字$number = 99;,我想返回 80。

如果数字是$number = 20;,那么它才会返回20。

我怎样才能做到这一点?

编辑:很抱歉没有包含示例代码...这是我假设的一个简单问题。

基本上这是通过下面接受的答案解决的。

【问题讨论】:

  • 你是如何做到这一点的?
  • 这是一个简单的 foreach 任务,存储先前的值。
  • 与大多数关于 SO 的问题一样,如果您至少展示您尝试过的内容,您将得到社区更好的回应
  • 到目前为止你做了什么?这是非常基本的 foreach 循环,具有价值存储

标签: php arrays


【解决方案1】:

您可以先rsort 数组,然后循环,直到该值小于或等于您指定的值,然后break 退出循环,因为不再需要继续。

$value = 99;
$array = array(6, 20, 50, 80, 100);
rsort($array);
$result = 0;
foreach ($array as $a) {
    if ($a <= $value) {
        $result = $a;
        break;
    }
}

echo $result; //80

Demo

【讨论】:

  • 我不确定,但我认为这行不通。这将使值高于他想要的值,我要做的是将 $result = $a 放在 if 语句之后,并且只在 if 语句中包含 break。
  • @KevinLewis 我已将其更新为 rsort 并切换了运算符。
【解决方案2】:

循环遍历数组中的每个项目,并为每个小于您的数字的项目,用该数字替换一个变量。

    $final = 0;
    foreach($array as $element) {
        if($element <= $number) {
            $final = $element;
        }
    }

如果您的数组不按顺序排列,则应该以不同的方式完成。

$final-array = array();
    foreach($array as $element) {
        if($element <= $number) {
            array_push($final-array, $element);
        }
    }
$final = 0;
foreach($final-array as $num) {
    if($num>$final) {
        $final = $num;
    }
}

【讨论】:

  • 感谢这帮助了我
  • 为什么不简单地sort 数组?
猜你喜欢
  • 1970-01-01
  • 2019-02-13
  • 2017-05-31
  • 2018-03-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 2015-09-19
  • 2011-10-04
相关资源
最近更新 更多