Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP合并数组中的重复键_Php_Arrays - Fatal编程技术网

PHP合并数组中的重复键

PHP合并数组中的重复键,php,arrays,Php,Arrays,我从web服务获得响应(json),并将其转换/解码为php数组 已转换的数组php: $data = [ [ 'id' => '01', 'name' => 'ABC', 'label' => 'color', 'value' => '#000000' ],[ 'id' => '01', 'name' => 'ABC',

我从web服务获得响应(json),并将其转换/解码为php数组

已转换的数组php:

$data = [
    [
        'id' => '01',
         'name' => 'ABC',
         'label' => 'color',
         'value' => '#000000'
    ],[ 
         'id' => '01',
         'name' => 'ABC',
         'label' => 'active',
         'value' => true
    ],[
         'id' => '02',
         'name' => 'DEF',
         'label' => 'color',
         'value' => '#ffffff'
    ],[
         'id' => '02',
         'name' => 'DEF',
         'label' => 'active',
         'value' => false
    ]
];
预期阵列输出:

$data = [
    [
         'id' => '01',
         'name' => 'ABC',
         'color' => '#000000',
         'active' => true,
    ],[ 
         'id' => '02',
         'name' => 'DEF',
         'color' => '#ffffff',
         'value' => false
    ]
];

什么php函数适合这种情况?提前感谢

在这种情况下,您必须在阵列中循环并删除重复项,然后尝试给定的方法

$data = json_decode($data); //decode the json into a php array

foreach ($data as $key=>$subArray){ //loop over the array

  //check and see if value is either true/false
  if (is_bool($subArray['value'])){ 
   $processedArray[] = $subArray; //build output
  }

}

print_r($processedArray); //output/dump array for debugging
$data=json\u decode($data,true);
$filtered=array();
对于($i=0;$i
您可以简单地使用
foreach

$r = [];
foreach($data as $v){
  if(isset($r[$v['id']])){
    $r[$v['id']][$v['label']] = $v['value'];
  }else{
    $r[$v['id']] = [
        'id'        => $v['id'],
        'name'      => $v['name'],
        $v['label'] => $v['value']
    ];
  } 
}

活生生的例子:

通常涉及到一个
foreach
,您尝试过吗?您尝试过什么吗?