所以我得到了一个一维数组,就像:
Array
(
[0] => md5
[1] => name
[2] => description
[3] => url
)和一个多维数组:
Array
(
[0] => Array
(
[0] => md5#1
[1] => name1
[2] => desc1
[3] => url1
)
[1] => Array
(
[0] => md5#2
[1] => name2
[2] => desc2
[3] => url2
)
)我希望使用第一个数组的值作为多维数组的子数组的键,因此输出应该如下所示:
Array
(
[0] => Array
(
[md5] => md5#1
[name] => name1
[desription] => desc1
[url] => url1
)
[1] => Array
(
[md5] => md5#2
[name] => name2
[description] => desc2
[url] => url2
)
)或者(作为一个有点离题的问题),如果多维数组的元素键不是md5,而是md5,那么如何根据它们的值对多维数组的元素进行排序?
提前感谢!
发布于 2017-06-02 20:30:58
要组合两个数组的值,其中一个是键,另一个是值,请使用array_combine函数:
$keysArray = [];
$multiArray = [];
$result_array = [];
foreach ($multiArray as $value) {
$result_array[] = array_combine($keysArray, $value);
}对于排序--使用usort并定义您的自定义函数:
usort($result_array, function($a, $b) { return strcmp($a['md5'], $b['md5']); });发布于 2022-06-13 00:40:04
下面是@u_mulder的回答的功能类型。
这种技术只是将键名数组作为数组中每一行的键。
使用箭头函数语法(自PHP7.4以来可用),允许自定义回调访问全局范围的$keys数组,而无需在函数声明中显式地写入use($keys)。
代码:(演示)
$first = ['md5#1', 'name1', 'description1', 'url1'];
$second = ['md5#2', 'name2', 'description2', 'url2'];
$multidimArray = [$first, $second];
$keys = ['md5', 'name', 'description', 'url'];
var_export(
array_map(
fn($row) => array_combine($keys, $row),
$multidimArray
)
);https://stackoverflow.com/questions/44336910
复制相似问题