我想要将一些数组显示为表格。它们具有匹配的键,但有些键可能缺少某些键,有些键可能没有其他键的键。是否有一种简单的方法可以将这些数组合并到一个2D数组中,该数组不会忽略其中某些数组中缺少的元素,也不会折叠数组,以便将某些值放入错误的#34;列中。 ?
更具体地说,我想知道是否有一个功能是为了这个或者我只需要自己编码。
答案 0 :(得分:1)
我会尝试在这里制作像我们这样类似问题的2D数组。 假设我们有一个X数组,其中每个数组代表一个人。
$person1= array(
"name" => "Lako",
"surname" => "Tuts",
"age" =>25
);
$person2 = array(
"name" => "Igor",
"country" => "Croatia",
"age" =>25
);
这里我们有两个具有相似但不同信息的人员阵列。主要区别在于密钥 surname 和 country ,这两个数组中都不存在。
我们需要迭代它们,但为了让我们的工作变得更容易,我们可以将它们的变量名称组合在一个数组中,然后我们可以迭代它们。
$arrays = array("person1","person2");
我们可以直接将两个数组保存在变量$ arrays中,但不需要用重复信息填充内存。
我们现在需要知道所有数组中的所有键,以便我们可以检查哪些键存在,哪些键不存在。
$arrayKeys = array();
foreach( $arrays as $value ){
$thisArrayKeys = array_keys($$value);
$arrayKeys = array_merge($arrayKeys ,$thisArrayKeys );
}
我们制作了一个空数组来存储键 arrayKeys 。然后我们使用包含人员信息数组的变量名称迭代数组。我们使用双美元符号来获取与这些数组中的值具有相同名称的变量。 “人”=> $“person”=> $人
现在我们拥有了所有数组中的所有键,让我们将它们设置为唯一,这样我们就没有重复的键。
$arrayKeys = array_unique($arrayKeys);
我们需要一个新阵列,它将是我们需要的2D阵列,它将保存关于每个人的所有格式化信息。
//the new array
$theNewArray = array();
foreach( $arrays as $value ){
//get the array info for the person
//first iteration will be $person1
$personArray = $$value;
//for each unique key we have, we will check if the key does exist
//in the current person array. If it does not exist we then make a
//new entry in the array with that key and an empty value
foreach($arrayKeys as $key){
if(!array_key_exists($key, $personArray)) {
$personArray[$key] = "";
}
}
//Now that we have an array filled with missing keys lets sort it by
//the keys so that we have each person information with the same key order
ksort($personArray);
//Push that person array in the new array
$theNewArray[] = $personArray;
}
如果你打印变量 theNewArray ,你会得到这个:
Array
(
[0] => Array
(
[age] => 25
[country] =>
[name] => Lako
[surname] => Tuts
)
[1] => Array
(
[age] => 25
[country] => Croatia
[name] => Igor
[surname] =>
)
)
我希望这就是您所需要的,这将有助于您解决问题。