php数组的key与value翻转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php数组的key与value翻转相关的知识,希望对你有一定的参考价值。

$arr = array("a","b","c","a","c","a",'d','f');
$list = array_count_values($arr);
现在这个$list数组的key是$arr的索引;value是该key在$arr数组中出现的次数;
现在想将这个$list数组的key与value进行逆转;
不知道怎么做!

可以逆转,不过其中会有3个值,因为你的b,d,f出现都是一次,所以转过来以后b,d的位置就会被最后出现的f替换掉
$arr = array("a","b","c","a","c","a",'d','f');
$list = array_count_values($arr);
echo "<pre>";
print_r($list);
foreach($list as $k=>$v)
$arr1[$v]=$k;

建议重组

输出如下:
Array
(
[a] => 3
[b] => 1
[c] => 2
[d] => 1
[f] => 1
)
Array
(
[3] => a
[1] => f
[2] => c
)追问

怎么重组法呢?
比如说:我现在的结果是
Array
(
[a] => 3
[b] => 1
[c] => 2
[d] => 1
[f] => 1
);
我现在就像用后面的值作为这个数组的排序条件;

参考技术A 看到你的问题我就知道你想做排序了你可以这样,不用重组的:

$arr = array("a","b","c","a","c","a",'d','f');
$list = array_count_values($arr);
asort($list) //正序排
var_dump($list);
arsort($list); //倒序排
var_dump($list);本回答被提问者采纳
参考技术B array_diff()追问

不对呀!
这个函数是返回数组的差集啊!
我现在的结果是:Array
(
[a] => 3
[b] => 1
[c] => 2
[d] => 1
[f] => 1
)
我要将这个结果变为:

Array
(
[3] => a
[2] => c
[1] => b
[1] => d
[1] => f
)
就是讲数组按照key进行倒叙排列

追答

记错了,array_flip()

php中对2个数组相加的函数

<?php 
function array_add($a,$b){ 
//根据键名获取两个数组的交集 
$arr=array_intersect_key($a, $b); 
//遍历第二个数组,如果键名不存在与第一个数组,将数组元素增加到第一个数组 
foreach($b as $key=>$value){ 
if(!array_key_exists($key, $a)){ 
$a[$key]=$value; 
} 
} 
//计算键名相同的数组元素的和,并且替换原数组中相同键名所对应的元素值 
foreach($arr as $key=>$value){ 
$a[$key]=$a[$key]+$b[$key]; 
} 
//返回相加后的数组 
return $a; 
} 
$a = array(‘0‘=>‘2‘,‘1‘=>‘4‘,‘3‘=>‘8‘,‘a‘=>‘100‘); 
$b = array(‘0‘=>‘5‘,‘2‘=>‘4‘,‘b‘=>‘33‘,‘a‘=>‘22‘); 
$arr=array_add($a,$b); 
print_r($arr); 
?> 

 

以上是关于php数组的key与value翻转的主要内容,如果未能解决你的问题,请参考以下文章

php 数组判断key是不是存在,如果存在显示此key的value

php数组函数常见的那些

PHP中如何给关联数组的key和value转码?

PHP获取二维数组中指定Key的重复Value

PHP获取二维数组中指定Key的重复Value

PHP读书笔记- 数组