例:
$arr = array(
'apple' => 'sweet',
'grapefruit' => 'bitter',
'pear' => 'tasty',
'banana' => 'yellow'
);
Run Code Online (Sandbox Code Playgroud)
我想切换葡萄柚和梨的位置,所以阵列将成为
$arr = array(
'apple' => 'sweet',
'pear' => 'tasty',
'grapefruit' => 'bitter',
'banana' => 'yellow'
)
Run Code Online (Sandbox Code Playgroud)
我知道要切换的元素的键和值,是否有一种简单的方法可以做到这一点?或者它需要循环+创建一个新数组?
谢谢
小智 18
比arcaneerudite的解决方案更短,更简单:
<?php
if(!function_exists('array_swap_assoc')) {
function array_swap_assoc($key1, $key2, $array) {
$newArray = array ();
foreach ($array as $key => $value) {
if ($key == $key1) {
$newArray[$key2] = $array[$key2];
} elseif ($key == $key2) {
$newArray[$key1] = $array[$key1];
} else {
$newArray[$key] = $value;
}
}
return $newArray;
}
}
$array = $arrOrig = array(
'fruit' => 'pear',
'veg' => 'cucumber',
'tuber' => 'potato',
'meat' => 'ham'
);
$newArray = array_swap_assoc('veg', 'tuber', $array);
var_dump($array, $newArray);
?>
Run Code Online (Sandbox Code Playgroud)
经过测试,工作正常
没有简单的方法,只有一个循环或一个新的数组定义。