如何在维护订单的同时更改数组中的键?

Cri*_*les 15 php arrays

我怎么能这样做:

$array = array('a' => 1, 'd' => 2, 'c' => 3); //associative array

// rename $array['d'] as $array['b']
$array = replace_key_function($array, 'd', 'b');

var_export($array); // array('a' => 1, 'b' => 2, 'c' => 3); same order!
Run Code Online (Sandbox Code Playgroud)

我没有看到这样做的功能.有办法做到这一点?

zer*_*kms 27

http://ideone.com/nCZnY

$array = array('a' => 1, 'd' => 2, 'c' => 3); //associative array

// rename $array['d'] as $array['b']
$array = replace_key_function($array, 'd', 'b');

var_export($array); // array('a' => 1, 'b' => 2, 'c' => 3); same order!

function replace_key_function($array, $key1, $key2)
{
    $keys = array_keys($array);
    $index = array_search($key1, $keys);

    if ($index !== false) {
        $keys[$index] = $key2;
        $array = array_combine($keys, $array);
    }

    return $array;
}
Run Code Online (Sandbox Code Playgroud)

  • @Nazariy:php不会复制原始参数,直到它被修改(称为copy-on-write,COW).从这个角度来看,我没有看到在这种特殊情况下使用引用的任何优点 (2认同)
  • @ Memor-X:所以不要试图你假设我会在你用小猫观看youtube视频时为你做这件事吗? (2认同)