PHP使用一个数组作为多维数组子数组的键
我得到了一个一维数组,如:PHP使用一个数组作为多维数组子数组的键,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我得到了一个一维数组,如: Array ( [0] => md5 [1] => name [2] => description [3] => url ) 和一个多维数组: Array ( [0] => Array ( [0] => md5#1 [1] => name1 [2] => desc1 [3] => url1
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]而是[0],我如何按md5的值对它们进行排序
提前谢谢 要组合两个数组的值,其中一个数组的值是键,另一个数组的值是值,请使用函数:
$keysArray = [];
$multiArray = [];
$result_array = [];
foreach ($multiArray as $value) {
$result_array[] = array_combine($keysArray, $value);
}
usort($result_array, function($a, $b) { return strcmp($a['md5'], $b['md5']); });
对于排序-使用usort
并定义自定义函数:
$keysArray = [];
$multiArray = [];
$result_array = [];
foreach ($multiArray as $value) {
$result_array[] = array_combine($keysArray, $value);
}
usort($result_array, function($a, $b) { return strcmp($a['md5'], $b['md5']); });
如果确定两个数组中元素的顺序-
array\u combine
。排序是通过usort
完成的。但我该如何准确地进行排序呢?如果我尝试array\u combine($keysarray,$multiDarray)
我得到array\u combine():两个参数的元素数应该相等
,因为我认为它试图为[0]=>数组设置键,而不是为它设置键;这就是为什么会有foreach循环看到他的答案。它在第一个级别上遍历每个项目,并对其值应用联合收割机。该死,我在第一个数组中有一个额外的元素,我不知道这个错误来自何处^^^非常感谢!顺便问一下,如何将$result\u array
的值保存在foreach外部?可能应该把&
放在哪里?否则,$result\u数组
如果在foreach外部打印,则只能获得1个元素当然,再次感谢!我想它在array\u push()
而不是[]
时也会起同样的作用,对吗?sry用于回答愚蠢的问题,但我正在努力理解数组到底是如何工作的是的,array\u push($array,$value)
与$array[]=$value