如果‘u’、‘v’和‘w’键下的值相同,我想合并多维数组的值.

$myarray = array (
  '0' => 
    array (
      'u' => '30', 
      'v' => '16', 
      'w' => '22',        
      'x' => '30', 
      'y' => '16', 
      'z' => '22',  
),
  '1' => 
    array (
      'u' => '32', 
      'v' => '25', 
      'w' => '1',        
      'x' => '30', 
      'y' => '16', 
      'z' => '22',
),   
  '2' => 
    array (
      'u' => '30', 
      'v' => '16', 
      'w' => '22',        
      'x' => '54', 
      'y' => '96', 
      'z' => '2',
),   
  '3' => 
    array (
      'u' => '30', 
      'v' => '16', 
      'w' => '22',        
      'x' => '3', 
      'y' => '1', 
      'z' => '6',
)    
); 

我希望输出如下:

//OUTPUT

array (
  '0' => 
    array (
      'u' => '30', 
      'v' => '16', 
      'w' => '22',        
      'x' => '30,54,3', 
      'y' => '16,96,1', 
      'z' => '22,2,6',  
),
  '1' => 
    array (
      'u' => '32', 
      'v' => '25', 
      'w' => '1',        
      'x' => '30', 
      'y' => '16', 
      'z' => '22',
)   
) 

这就是我到目前为止一直试图做的事情,但对我来说并不奏效.

<?php
$n = 0;            
$output = [];
foreach ($myarray as $row) {
    
    $prevkey = key(array_slice($output, -1,1,true));// get previous array key    
    
    if(array_key_exists('0', $output)){
        
        if($output[$prevkey]['u'] == $row['u'] && $output[$prevkey]['v'] == $row['v'] &&   $output[$prevkey]['w'] == $row['w'] ){
            echo "yes <br>";
           $output += $row;
        }
        
    }else{
      $output[] = $row;  
    }
    $n++;
}

var_dump($output); 
?>

推荐答案

您可以使用array_reduce:

$grouped = array_reduce($myarray, function ($result, $item) {
    $key = '';
    foreach (['u', 'v', 'w'] as $prop) {
        $key .= $item[$prop] . '_';
    }
    if (array_key_exists($key, $result)) {
        foreach (['x', 'y', 'z'] as $prop) {
            $result[$key][$prop] .= ',' . $item[$prop];
        }
    } else {
        $result[$key] = $item;
    }
    return $result;
}, []);

$result = array_values($grouped);

Working example

Php相关问答推荐

Laravel—通过单击处理多条路由

添加自定义Metabox到WooCommerce管理订单,启用HPOS

如何在搜索域名时重定向到登陆页?

如何限制WordPress自定义分类术语页面中的术语数量

用于计算付款费用的WooCommerce管理编辑产品中的自定义复选框

如何使用MS Graph PHP SDK V2下载文件

在WooCommerce循环中添加子类别和产品之间的分隔符

$this->;db->;update();CodIgnitor中的功能不工作

WooCommerce:如果订单总数为零,则隐藏本地取货运输选项

WooCommerce 按产品运输插件:仅收取较高的运输费用

产品页面自定义复选框可对 WooCommerce 购物车小计启用百分比折扣

Laravel 10 - 使用缓存对 ThrottleRequest 进行限制

基于WooCommerce中的产品变体自定义感谢页面跳转

.htaccess环境变量条件不被判断

如何在构建 PHP 类别数组树的递归函数中将父面包屑传递给子项?

我试图在我的视图上显示从数据库中获取的数据,但我无法显示它.拉维尔 10.x /

如何在光速网络服务器中使用 apache ..htaccess

Docker: unixodbc.h 没有这样的文件或目录.已安装 unixodbc-dev 时出现pecl install sqlsrv错误

根据数组中的文本文件编号显示星级

多排序子数组 - 包含范围数据的子数组