【发布时间】:2019-02-10 12:50:22
【问题描述】:
我正在尝试基于hash 值合并多维数组的子数组。
我的输入如下所示:
$images_arr = [
[
'hash' => '948e980ed2a36d917f1b3026b04e0016',
'filename' => ['73315_73316_73317_LAKE13437_322.tif'],
'filepath' => ['_TEST_DATA']
// and there is more data here
],
[
'hash' => '948e980ed2a36d917f1b3026b04e0016',
'filename' => ['73315_73316_73317_LAKE13437_322(1).tif'],
'filepath' => ['_TEST_DATA/subdirectory']
// and there is more data here
]
];
当一个或多个hash 值匹配时,我想合并数组并将filename 子数组值和filepath 子数组值合并到第一个。
类似这样的:
array (
0 =>
array (
'hash' => '948e980ed2a36d917f1b3026b04e0016',
'filename' =>
array (
0 => '73315_73316_73317_LAKE13437_322.tif',
1 => '73315_73316_73317_LAKE13437_322(1).tif',
),
'filepath' =>
array (
0 => '_TEST_DATA',
1 => '_TEST_DATA/subdirectory',
),
// more data here
),
)
该数组将包含数千条记录,我需要能够组合多个数组,其中只有 hash 值匹配。
到目前为止,我的努力是在数组上使用 foreach 来创建一个变量来缓存哈希值并检查以下循环。然后我可以提取filename 或filepath 就是这种情况。不确定这是否是最熟练的方法 - 抱歉,我仍然是 php 新手。
我的编码尝试:
$cache_hash = null;
foreach ($images_arr as $image) {
$this_hash = $image['hash'];
if ($cache_hash != $this_hash) {
$cache_hash = $this_hash;
} else {
foreach ($image['filename'] as $filename) {
//Get filename
}
}
}
【问题讨论】:
标签: php arrays multidimensional-array merge