为了账号安全,请及时绑定邮箱和手机立即绑定

PHP怎么实现数组键名不变,值互换?

PHP怎么实现数组键名不变,值互换?

PHP
ITMISS 2019-03-17 21:00:19
$arr = array('a'=>'aaa','b'=>'bbb'); 转变为 $arr = array('a'=>'bbb','b'=>'aaa');
查看完整描述

7 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

$arr = array('a'=>'aaa','b'=>'bbb');
$arr_new = array_combine(array_keys($arr),array_reverse(array_values($arr)));
var_dump($arr_new);

=============
哎,迟了一步,@熊猫桑 握爪

查看完整回答
反对 回复 2019-03-18
?
冉冉说

TA贡献1877条经验 获得超1个赞

代码写的有点烂,如果有更好方法的话欢迎交流:

<?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));
查看完整回答
反对 回复 2019-03-18
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

function convert($array){
    $arrayValue = array_values($array);
    foreach ($array as $key => $value) {
        $array[$key] = array_pop($arrayValue);
    }
    return $array;
} 
查看完整回答
反对 回复 2019-03-18
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

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

查看完整回答
反对 回复 2019-03-18
?
守候你守候我

TA贡献1802条经验 获得超10个赞

我不知道php里有没有类似js的写法,不过所有语言通用的方法就是用一个中间变量,伪代码

t = a
a = b
b = t

这样就能交换两个变量的值了。如果你要什么原生的方法大概是没有的,但php7.1支持解构赋值,应该也可以迂回解决这个问题

查看完整回答
反对 回复 2019-03-18
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

实现的比较粗糙,思路就是: 先存储第一个的键和值,循环到第2个时,进行交换:

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

function zhuan($srr){
    $temp = array(); // 临时存储

    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) );
查看完整回答
反对 回复 2019-03-18
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

新建临时变量存放吧

查看完整回答
反对 回复 2019-03-18
  • 7 回答
  • 0 关注
  • 486 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信