📅  最后修改于: 2023-12-03 15:03:40.073000             🧑  作者: Mango
这是一个PHP程序,能够让你向上或向下移动(键,值)对。
function moveKeyValue($array, $key, $position) {
$keys = array_keys($array);
$index = array_search($key, $keys);
if ($position === 'up' && $index > 0) {
$newIndex = $index - 1;
} elseif ($position === 'down' && $index < count($keys) - 1) {
$newIndex = $index + 1;
} else {
return $array;
}
array_splice($keys, $index, 1);
array_splice($keys, $newIndex, 0, $key);
$newArray = [];
foreach ($keys as $key) {
$newArray[$key] = $array[$key];
}
return $newArray;
}
$array
:要进行移动的数组。
$key
:要移动的键。
$position
:移动的方向。取值为'up'
或'down'
。
$array = [
'a' => 'Alice',
'b' => 'Bob',
'c' => 'Charlie',
'd' => 'David',
];
$key = 'b';
$newArray = moveKeyValue($array, $key, 'up');
print_r($newArray);
/* 输出:
Array
(
[b] => Bob
[a] => Alice
[c] => Charlie
[d] => David
)
*/
$newArray = moveKeyValue($array, $key, 'down');
print_r($newArray);
/* 输出:
Array
(
[a] => Alice
[c] => Charlie
[b] => Bob
[d] => David
)
*/
该程序首先使用array_keys()
函数将数组的键组成一个新数组$keys
。然后,使用array_search()
函数在$keys
中查找$key
的索引$index
。接下来,根据$position
的取值决定新的索引$newIndex
,并使用array_splice()
函数将$key
插入到$keys
的新位置。最后,遍历$keys
创建新数组$newArray
,并根据$keys
中的键从$array
中取出对应的值。
在示例中,我们首先将$key
为'b'
的键值对向上移动,在新数组$newArray
中键'b'
在键'a'
的前面,其余键值对没有变化。然后,将$key
向下移动,在新数组$newArray
中键'b'
在键'c'
的后面,其余键值对没有变化。