【问题标题】:PHP rename the keys of an arrayPHP重命名数组的键
【发布时间】:2012-09-16 11:15:39
【问题描述】:

如何重命名数组中的键?

从这个名为 $start_array 的数组开始,

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

并更改 'date' 和 'revenue' 的键,这样你就得到了这个 $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'] );
}

【问题讨论】:

  • 首先使用您想要的键名创建它不是更好的主意吗?
  • 不幸的是,这是不可能的,我得到了这个数组。
  • 别人的代码生成了数组,我不应该改变那个代码。
  • 使用旧密钥可能会给您带来什么损失?
  • 你能提供 var_dump($final_array) 的结果吗?假设您要更改的原始键是 dateid 和 ctrl_version_revenue,我认为您的代码没有任何问题

标签: php arrays key key-value


【解决方案1】:
foreach( $start_array as &$arr ) {
  $arr["x"] = $arr['date'];
  unset( $arr['date'] );
  $arr['y'] = $arr['revenue'];
  unset( $arr['revenue'] );
}
unset($arr);

试试上面的代码。

【讨论】:

    【解决方案2】:

    你可以使用array_combine。

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

    The working demo.

    或者只是使用循环:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:
        $new_keys = array( 'old1'=>'new1', 'old2'=>'new2', ... );
        foreach( $array as $key=>$value ) $newarray[$new_keys[$key]]=$value; 
        

        【讨论】:

        • 如果它包含的不仅仅是代码本身,你的答案会更清楚。
        猜你喜欢
        • 1970-01-01
        • 2014-03-19
        • 2021-05-25
        • 2020-05-28
        • 2012-03-25
        • 2015-12-28
        • 1970-01-01
        • 2014-01-28
        • 1970-01-01
        相关资源
        最近更新 更多