php实现数组纵向转横向并过滤重复值的方法分析

yipeiwu_com6年前PHP代码库

本文实例讲述了php实现数组纵向转横向并过滤重复值的方法。分享给大家供大家参考,具体如下:

一、问题

有数组:

array(
  6=>array(5=>'黑xx', 42=>'XXL'),
  7=>array(5=>'黑xx', 40=>'XL'),
  8=>array(8=>'灰',  40=>'XL'),
);

要求转换成如下结果(数组纵向转横向并过滤重复值):

array(
  0=>array(5=>'黑xx', 8=>'灰'),
  1=>array(42=>'XXL', 40=>'XL'),
);

二、解决方法:

方法1:

$a = array(
  6=>array(5=>'黑xx', 42=>'XXL'),
  7=>array(5=>'黑xx', 40=>'XL'),
  8=>array(8=>'灰',  40=>'XL'),
);
foreach($a as $r) {
 $b[key($r)] = current($r);
 next($r);
 $c[key($r)] = current($r);
}
$b = array($b, $c);
print_r($b);

方法2:

$arr = array(
  6=>array(5=>'黑xx', 42=>'XXL'),
  7=>array(5=>'黑xx', 40=>'XL'),
  8=>array(8=>'灰',  40=>'XL'),
);
$result = array();
foreach($arr as $a){
  $keys = array_keys($a);
  $vals = array_values($a);
  $result[0][$keys[0]] = $vals[0];
  $result[1][$keys[1]] = $vals[1];
}
print_r($result);

最简单的写法:

$a = array(
  6=>array(5=>'黑xx', 42=>'XXL'),
  7=>array(5=>'黑xx', 40=>'XL'),
  8=>array(8=>'灰',  40=>'XL'),
);
foreach($a as $r) {
 $i = 0;
 while(list($k, $v) = each($r)) $b[$i++][$k] = $v;
}
print_r($b);

最终运行结果均为:

Array
(
  [0] => Array
    (
      [5] => 黑xx
      [8] => 灰
    )
  [1] => Array
    (
      [42] => XXL
      [40] => XL
    )
)

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php常用函数与技巧总结》、《PHP错误与异常处理方法总结》、《php面向对象程序设计入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

php判断两个浮点数是否相等的方法

本文实例讲述了php判断两个浮点数是否相等的方法。分享给大家供大家参考。具体分析如下: 由于浮点数直接用==判断是否相等是不完全正确的,所以下面给出了一个方法,先设定的一个精度,如果在精...

解析PHP高效率写法(详解原因)

1.尽量静态化:如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。当然了,这个测试方法需要在十万级以上次执行,效果才明显。其实静态方法和非静...

php文件上传、下载和删除示例

php文件上传、下载和删除示例

php文件上传、下载和删除示例大体思路如下,具体内容如下 一.文件上传 1.把上传文件的区域做出来 div1 2.把显示文件的区域做出来 div2 3.提交表单,上传文...

php操作xml入门之xml基本介绍及xml标签元素

本文实例讲述了php操作xml入门之xml基本介绍及xml标签元素。分享给大家供大家参考。具体分析如下: 以xml实例来讲解: 复制代码 代码如下:<?xml versio...

php 面试碰到过的问题 在此做下记录

代码优化 复制代码 代码如下: for($i=0;$i<8;$i++){ array_push($week,$arr); } 复制代码 代码如下: for($i=0;$i<...