我有以下'key'数组:(数组1)
Array
(
[0] => first_name
[1] => surname
[2] => position
[3] => age
)
此数组应确定数组2中应存在的键和键/值的顺序。因此,在完美的世界中,数组2将如下所示:
Array
(
[0] => Array
(
[first_name] => James
[surname] => Johnstone
[position] => Striker
[age] => 42
)
[1] => Array
(
[first_name] => Al
[surname] => MacLean
[position] => Defender
[age] => 22
)
...
)
我遇到的问题是在以下示例数组中。有时:
a)数组2中键的顺序与数组1不同 b)数组1中定义的一些键在数组2中不存在 - 如下所示:
Array
(
[0] => Array
(
[position] => Defender
[first_name] => James
[surname] => McDonald
)
[1] => Array
(
[position] => Striker
[first_name] => Ben
[surname] => Lailey
)
...
)
我想要一些帮助创建一个PHP函数,它将采用一个'格式错误'的数组2,如上面的那个,并将其转换为应该如何:按照数组1定义的顺序,并添加任何缺失要像这样成为'正确'的关键:
Array
(
[0] => Array
(
[first_name] => James
[surname] => McDonald
[position] => Defender
[age] =>
)
[1] => Array
(
[first_name] => Ben
[surname] => Lailey
[position] => Striker
[age] =>
)
...
)
此示例中使用的密钥是任意的,可能会在阵列1中添加,删除或重新排序新密钥,我需要阵列2来尊重阵列1.
提前谢谢。
答案 0 :(得分:1)
尝试使用array-key-exists函数 http://php.net/manual/en/function.array-key-exists.php
如果不存在,请添加缺少密钥的空元素。 (你不关心关联数组中的顺序)
答案 1 :(得分:1)
一个简单的实现:
// Pass in an array of keys, and an array of arrays
function cleanArray($keys, $arrays)
{
// Create an empty container for our final output
$final = array();
// Loop through array of arrays
foreach($arrays as $a)
{
// Create empty value for current item
$next = array();
// Loop through keys, in order
foreach($keys as $k)
{
// Assign next key and value if we have it, or a blank string if we don't
$next[$k] = isset($a[k]) ? $a[k] : '';
}
// Add current item to output
$final[] = $next;
}
// Return final values, each item now having its keys ordered and normalized
return $final;
}
答案 2 :(得分:0)
$new=array();
foreach ($array2 as $a2){
foreach($array1 as $k1=>$a1){
$new[][$k1]=$a2[$k1];
}
}