Php 大于或小于数组内的\u

Php 大于或小于数组内的\u,php,arrays,array-walk,Php,Arrays,Array Walk,我试图用特定条件替换数组值 假设数组$mark具有以下值 $mark = array(90,85); 只是正常的检查值,它回显正确的值 array_walk_recursive($mark, function (&$k) { if($k==90){$k='4.0';} if($k==85){$k='3.6';} }); print_r($mark); 输出为 Array ( [0] => 4.0 [1] => 3.6 ) 但当应用大于或小于等条件时,它返回错

我试图用特定条件替换
数组

假设数组
$mark
具有以下值

$mark = array(90,85);
只是正常的检查值,它回显正确的值

array_walk_recursive($mark, function (&$k) { 
  if($k==90){$k='4.0';}
  if($k==85){$k='3.6';}
});

print_r($mark);
输出为

Array ( [0] => 4.0 [1] => 3.6 )
但当应用大于或小于等条件时,它返回错误的值

array_walk_recursive($mark, function (&$k) { 
  if($k>=90){$k='4.0';}
  if($k>=80 AND $k<90){$k='3.6';}
  if($k<79){$k='2.8';}
});

print_r($mark);

如果函数中的每一个
都按其在代码中出现的顺序进行了检查:

// $k is 90
if($k>=90){$k='4.0';}
// $k is 4
if($k>=80 AND $k<90){$k='3.6';}
// $k is still 4
if($k<79){$k='2.8';}
// $k is 2.8

您必须在
if
中使用
else

<?php
$mark = array(90,85);

array_walk_recursive($mark, function (&$k) { 
    if ($k >= 90) {
        $k = '4.0';
    } else if ($k >= 80 && $k<90) {
        $k = '3.6';
    } else if ($k < 80) {
        $k = '2.8';
    }
});

print_r($mark);

如果每个
都在测试前一个值之后的值,则前一个值可能已经更改

$k
为90时,如果
成功,则第一个
将更改为
4.0

如果
4.0
不在
80
90
之间,则第二个
失败

第三个
if
成功,因为
4.0
小于
79
,所以它将其更改为
2.8

您应该使用
elseif
,这样它只在前一个失败时执行测试,然后它将始终测试
$k
的原始值。对于最后一种情况,您也可以使用
else

array_walk_recursive($mark, function (&$k) { 
        if($k>=90) {
            $k='4.0';
        }
        elseif($k>=80 AND $k<90) {
            $k='3.6';
        }
        elseif($k<79) {
            $k='2.8';
        }
    });
array\u walk\u recursive($mark,function(&$k){
如果($k>=90){
$k='4.0';
}
elseif($k>=80和$k因为
if($k
<?php
$mark = array(90,85);

array_walk_recursive($mark, function (&$k) { 
    if ($k >= 90) {
        $k = '4.0';
    } else if ($k >= 80 && $k<90) {
        $k = '3.6';
    } else if ($k < 80) {
        $k = '2.8';
    }
});

print_r($mark);
array_walk_recursive($mark, function (&$k) { 
        if($k>=90) {
            $k='4.0';
        }
        elseif($k>=80 AND $k<90) {
            $k='3.6';
        }
        elseif($k<79) {
            $k='2.8';
        }
    });