gpt4 book ai didi

php - 大于或小于 array_walk 递归

转载 作者:可可西里 更新时间:2023-11-01 00:18:19 26 4
gpt4 key购买 nike

我正在尝试用特定条件替换 array 值。

假设数组 $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);

输出

Array ( [0] => 2.8 [1] => 2.8 )

最佳答案

每个if正在测试前一个可能已经更改值之后的值。

$k是90,第一个if成功,将其更改为 4.0 .

第二个if失败,因为 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';
}
});

顺便说一句,您可能想使用 < 80对于最后一个测试,或者只是 else没有测试。当$k正是79 , 你不会更新它。

关于php - 大于或小于 array_walk 递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54551862/

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