用php交换多维数组键

时间:2017-06-30 07:19:14

标签: php arrays multidimensional-array swap

我有两个键,想要在多维数组中交换它们。

我已经参考了这些Swap array values with phpHow to swap two values in array with indexes? 引用,但没有得到任何帮助。

我有这个数组,

[
    'box-a' => 'email',
    'box-b' => 'job',
    'box-c' => 'company',
    'box-d' => 'candidate',
    'box-e' => 'calender',
    'box-f' => 'smartlist',
    'box-g' => 'analytics',
]

我想交换两个数组键box-bbox-e,但数组值应保持不变。

我试过了,

list($array[$swap_a], $array[$swap_b]) = array($array[$swap_b], $array[$swap_a]);

但没有成功。我哪里错了?

2 个答案:

答案 0 :(得分:2)

尝试使用临时数组,如下所示:

$a = [
'box-a' => 'email',
'box-b' => 'job',
'box-c' => 'company',
'box-d' => 'candidate',
'box-e' => 'calender',
'box-f' => 'smartlist',
'box-g' => 'analytics',
];

$temp = $a['box-e'];
$a['box-e'] = $a['box-b'];
$a['box-b'] = $temp;

答案 1 :(得分:2)

您可以在单行中使用array_replace(),并避免使用临时数据存储。

代码:(Demo

$a = [
'box-a' => 'email',
'box-b' => 'job',
'box-c' => 'company',
'box-d' => 'candidate',
'box-e' => 'calender',
'box-f' => 'smartlist',
'box-g' => 'analytics'
];

var_export(array_replace($a,['box-b'=>$a['box-e'],'box-e'=>$a['box-b']]));

输出:

array (
  'box-a' => 'email',
  'box-b' => 'calender',
  'box-c' => 'company',
  'box-d' => 'candidate',
  'box-e' => 'job',
  'box-f' => 'smartlist',
  'box-g' => 'analytics',
)