PHP 重命名数组的键

问题描述 投票:0回答:6

如何重命名数组中的键?

从名为 $start_array 的数组开始,

[0] => 
      [date] => 2012-05-01
      [revenue] => 100
[1] =>
      [date] => 2012-05-02
      [revenue] => 200

并更改“日期”和“收入”的键,这样你就得到了这个 $final_array:

[0] => 
      [x] => 2012-05-01
      [y] => 100
[1] =>
      [x] => 2012-05-02
      [y] => 200

这是我可怕的尝试,它有效但很混乱。

$final_array = array();
$max = count($start_array);
for ($j = 0; $j < $max; $j++) {
  $final_array[] = array('x' => $start_array[$j]['dateid'], 'y' => $start_array[$j]['ctrl_version_revenue'] );
}
php arrays key key-value
6个回答
7
投票
foreach( $start_array as &$arr ) {
  $arr["x"] = $arr['date'];
  unset( $arr['date'] );
  $arr['y'] = $arr['revenue'];
  unset( $arr['revenue'] );
}
unset($arr);

尝试上面的代码。


3
投票

您可以使用

array_combine

$new_arr = array_map(function ($val) {
  return array_combine(array('x', 'y'), $val);
}, $arr);

工作演示。

或者只是使用循环:

foreach ($arr as &$el) {
  $el = array_combine(array('x', 'y'), $el);
}

1
投票

数组键的旧名称是“name”,新名称是“new_name”

$myrow=array('name'=>'Sabuj'); 
$myrow['new_name']=$myrow['name'];
unset($myrow['name']);
print_r($myrow);

Result: Array ( [new_name] => 'Sabuj' )

0
投票
$new_keys = array( 'old1'=>'new1', 'old2'=>'new2', ... );
foreach( $array as $key=>$value ) $newarray[$new_keys[$key]]=$value; 

0
投票

我喜欢这个性能最高的循环解决方案,带有

array_combine
,它也非常具有可读性。

$data = [
    ['date' => '2012-05-01', 'revenue' => '100'],
    ['date' => '2012-05-02', 'revenue' => '200'],
];

$array_map = [];
foreach ($data as $key => $values) {
    $array_map[$key] = array_combine(['x', 'y'], $values);
}

输出:

[0] => 
      [x] => 2012-05-01
      [y] => 100
[1] =>
      [x] => 2012-05-02
      [y] => 200

0
投票

无需任何循环即可完成

像下面这样

$arr= str_replace("date", "x", json_encode($arr));  
$arr= json_decode($arr, true);

$arr= str_replace("revenue", "y", json_encode($arr));  
$arr= json_decode($arr, true);

注意:确保没有任何与键名相同的值。在这种情况下,你的价值也会发生变化。发生这种情况的情况非常罕见

© www.soinside.com 2019 - 2024. All rights reserved.