我需要按升序对数组中的所有奇数位进行排序,将偶数位留在原位。 做了以下事情:
- 创建了一个接受数组的函数;
- 在函数中为奇数创建了一个空数组;
- forychem 遍历数组,而不是奇数卡住存根 -> “!”,并将它们的值放在奇数数组中;
- 按升序对奇数数组进行排序;
- Forych 开始遍历奇数数组,并在其中启动第二个 forych,以便插入排序数组的值而不是存根。
但是在输出结果中插入了相同的值而不是存根。
代码:
function debug($arr)
{
echo "<pre>" . print_r($arr, 1) . "</pre>";
}
function odd_sort (array $arr): array
{
$oddArr = [];
foreach ($arr as $key => $value)
{
if ($value % 2 == 1){
$oddArr[] = $value;
$arr[$key] = "!";
}
}
sort($oddArr);
foreach ($oddArr as $oddValue){
foreach ($arr as $key => $value) if ($value == "!") $arr[$key] = $oddValue;
}
return $arr;
}
$nums = [5, 3, 2, 7, 8, 1, 4,];
debug(odd_sort($nums));

如果这是你需要写的,那么仅仅 break 是不够的