Php 按键和值对多数组进行分组

Php 按键和值对多数组进行分组,php,arrays,multidimensional-array,transpose,Php,Arrays,Multidimensional Array,Transpose,我有一个像下面这样的数组 array:4 [▼ 0 => array:3 [▼ 0 => array:2 [▼ "url" => "https://domain.com.vn" "value" => "Keyword B3" ] 1 => array:2 [▼ "url" => "http

我有一个像下面这样的数组

array:4 [▼
  0 => array:3 [▼
    0 => array:2 [▼
      "url" => "https://domain.com.vn"
      "value" => "Keyword B3"
    ]
    1 => array:2 [▼
      "url" => "https://domain.com.vn"
      "value" => "[IMAGES 1]"
    ]
  ]
  1 => array:3 [▼
    0 => array:2 [▼
      "url" => "https://domain-4.com.vn"
      "value" => "D1"
    ]
    1 => array:2 [▼
      "url" => "https://domain-4.com.vn"
      "value" => "E3"
    ]
  ]
]
我想将上述两个数组合并为一个数组,如下所示:两个数组中的项数始终相等:

$result = [
    [
        "url" => [
            "https://domain.com.vn",
            "https://domain-4.com.vn"
        ]
        "value" => [
            "Keyword B3",
            "D1"
        ]
    ],
    [
        "url" => [
            "https://domain.com.vn",
            "https://domain-4.com.vn"
        ],
        "value" => [
            "[IMAGES 1]",
            "E3"
        ]
    ]
]

我找了很多,但还没有找到解决办法。感谢您的帮助。

由于两个子数组中的项数始终相等,您可以使用如下for循环:

$array=[ 0 => [ 0 => [ 'url'=>'https://domain.com.vn', '值'=>'关键字B3' ], 1 => [ 'url'=>'https://domain.com.vn', '值'=>'[图像1]' ] ], 1 => [ 0 => [ 'url'=>'https://domain-4.com.vn', “值”=>“D1” ], 1 => [ 'url'=>'https://domain-4.com.vn', “值”=>“E3” ] ] ]; $result=[]; 对于$i=0$i[$array[0][$i]['url'],$array[1][$i]['url'], 'value'=>[$array[0][$i]['value'],$array[1][$i]['value'], ]; } 打印结果; 结果:

大堆 [0]=>阵列 [url]=>数组 [0] => https://domain.com.vn [1] => https://domain-4.com.vn [值]=>数组 [0]=>关键字B3 [1] =>D1 [1] =>阵列 [url]=>数组 [0] => https://domain.com.vn [1] => https://domain-4.com.vn [值]=>数组 [0]=>[图像1] [1] =>E3
对于动态解决方案,需要迭代数组的第一级,然后将第一个深子数组的键与数组的特殊转置行为的返回值结合起来,并使用null和扩展运算符

这确实是一堆巫毒,但它是动态的

代码:


请参阅其他标记的堆栈溢出页面,以查看转置技术的其他用法。

是否删除了一些数据?项目数不匹配。能否显示第一个php数组代码。简而言之,让我们看看你已经做了什么。至少为数组添加一些代码。@AnuratChapanond我已经更新了,您可以改为导出数据吗?使用过程中使用的硬编码键不是很灵活。
var_export(
    array_map(
        function ($subarray) {
            return array_combine(
                array_keys($subarray[0]),
                array_map(null, ...array_values($subarray))
            );
        },
        $array
    )
);