鍍金池/ 問(wèn)答/PHP/ PHP怎么實(shí)現(xiàn)數(shù)組鍵名不變,值互換?

PHP怎么實(shí)現(xiàn)數(shù)組鍵名不變,值互換?

$arr = array('a'=>'aaa','b'=>'bbb');
轉(zhuǎn)變?yōu)?$arr = array('a'=>'bbb','b'=>'aaa');
回答
編輯回答
情殺

list($a['b'], $a['a']) = array_values($a);

2017年12月20日 14:28
編輯回答
冷溫柔

代碼寫的有點(diǎn)爛,如果有更好方法的話歡迎交流:

<?php

function arraySwap($arr) {
    $keys = array_keys($arr);
    $values = array_reverse(array_values($arr));
    $result = array_combine($keys, $values);
    return $result;
}
$arr = array('a'=>'aaa','b'=>'bbb');
var_export(arraySwap($arr));
2018年3月9日 06:51
編輯回答
痞性

實(shí)現(xiàn)的比較粗糙,思路就是: 先存儲(chǔ)第一個(gè)的鍵和值,循環(huán)到第2個(gè)時(shí),進(jìn)行交換:

<?php
$arr = array('a'=>'aaa','b'=>'bbb');

function zhuan($srr){
    $temp = array(); // 臨時(shí)存儲(chǔ)

    foreach($srr as $key=>$value){
        if( !count($temp) ){
            $temp = array(
                'key'=> $key,
                'value'=> $value
            );
        }else{
            $srr[ $temp['key'] ] = $value;
            $srr[ $key ] = $temp['value'];
        }
    }
    return $srr;
}

print_r( zhuan($arr) );
2018年2月18日 04:46
編輯回答
九年囚

我不知道php里有沒(méi)有類似js的寫法,不過(guò)所有語(yǔ)言通用的方法就是用一個(gè)中間變量,偽代碼

t = a
a = b
b = t

這樣就能交換兩個(gè)變量的值了。如果你要什么原生的方法大概是沒(méi)有的,但php7.1支持解構(gòu)賦值,應(yīng)該也可以迂回解決這個(gè)問(wèn)題

2018年6月12日 00:15
編輯回答
過(guò)客

新建臨時(shí)變量存放吧

2018年4月20日 16:26
編輯回答
久愛(ài)她
$arr = array('a'=>'aaa','b'=>'bbb');
$arr_new = array_combine(array_keys($arr),array_reverse(array_values($arr)));
var_dump($arr_new);

=============
哎,遲了一步,@熊貓桑 握爪

2017年4月22日 04:35
編輯回答
不將就
function convert($array){
    $arrayValue = array_values($array);
    foreach ($array as $key => $value) {
        $array[$key] = array_pop($arrayValue);
    }
    return $array;
} 
2017年8月6日 01:35