Php 如何基于键合并嵌套数组?
我有一个如上图所示的数组,我正在尝试根据键合并所有嵌套数组,例如现在有5个带有键34的数组。我想要一个包含34个键和5个值的数组。我怎样才能做到这一点?这是我的密码Php 如何基于键合并嵌套数组?,php,arrays,array-merge,Php,Arrays,Array Merge,我有一个如上图所示的数组,我正在尝试根据键合并所有嵌套数组,例如现在有5个带有键34的数组。我想要一个包含34个键和5个值的数组。我怎样才能做到这一点?这是我的密码 $proba = array(); while($row = $result->fetch(PDO::FETCH_ASSOC)){ extract($row); if(!in_array($id, array_column($posts_arr['lokacije'], 'id'))) {
$proba = array();
while($row = $result->fetch(PDO::FETCH_ASSOC)){
extract($row);
if(!in_array($id, array_column($posts_arr['lokacije'], 'id'))) {
$post_item = array(
'id' => $id,
'name' => $name,
'state' => $state,
'address' => $address,
'phone' => $phone,
'working_hours' => $working_hours,
'description' => $description,
'email' => $email,
'fb_page' => $fb_page,
'website' => $website,
'additional_info' => $additional_info,
'lat' => $lat,
'lng' => $lng
);
array_push($posts_arr['lokacije'], $post_item);
};
array_push($proba, array($id => $naziv));
$test = array_merge_recursive($proba, array($id => $naziv));
}
print_r($test);
对于我所理解的您正在尝试做的事情,简单的答案是:
foreach($input as $nr=>$data) {
foreach($data as $key=>$val) {
$output[$key][$nr] = $val;
}
}
这将简单地翻转层次结构级别。如果您只想收集值,这是一种方法。它保留了原始数组索引,但您可以只说“[]”而不是“[$nr]”,使其成为一个简单的顺序数组
如果您将数组显示为文本而不是大图像,我将向您显示结果。我理解您试图执行的操作的简单答案:
foreach($input as $nr=>$data) {
foreach($data as $key=>$val) {
$output[$key][$nr] = $val;
}
}
这将简单地翻转层次结构级别。如果您只想收集值,这是一种方法。它保留了原始数组索引,但您可以只说“[]”而不是“[$nr]”,使其成为一个简单的顺序数组
如果将数组显示为文本而不是大图像,我将显示结果
另外,我不明白为什么要使用提取
——我想,$post\u item
与$row
相同
另外,我不明白您为什么要使用
提取
-我想,$post\u项
与$row
相同,我创建了一个与您一样的演示,下面是代码:
$arr = [
[2 => 'A'],
[34 => 'B'],
[34 => 'C'],
[34 => 'D'],
[34 => 'E'],
[34 => 'F'],
[20 => 'G'],
];
$result = [];
foreach($arr as $a) {
foreach($a as $key => $value) {
array_key_exists($key, $result) ?
$result[$key][] = $value:
$result[$key] = [$value];
}
}
结果是:
array(3) {
[2]=>
array(1) {
[0]=>
string(1) "A"
}
[34]=>
array(5) {
[0]=>
string(1) "B"
[1]=>
string(1) "C"
[2]=>
string(1) "D"
[3]=>
string(1) "E"
[4]=>
string(1) "F"
}
[20]=>
array(1) {
[0]=>
string(1) "G"
}
}
我创建了一个与您一样的演示,下面是代码:
$arr = [
[2 => 'A'],
[34 => 'B'],
[34 => 'C'],
[34 => 'D'],
[34 => 'E'],
[34 => 'F'],
[20 => 'G'],
];
$result = [];
foreach($arr as $a) {
foreach($a as $key => $value) {
array_key_exists($key, $result) ?
$result[$key][] = $value:
$result[$key] = [$value];
}
}
结果是:
array(3) {
[2]=>
array(1) {
[0]=>
string(1) "A"
}
[34]=>
array(5) {
[0]=>
string(1) "B"
[1]=>
string(1) "C"
[2]=>
string(1) "D"
[3]=>
string(1) "E"
[4]=>
string(1) "F"
}
[20]=>
array(1) {
[0]=>
string(1) "G"
}
}
因此,迭代数组并计算键/值。您的问题写得不好。请不要张贴样本数据的屏幕截图。请通过复制粘贴
var\u export($your array)
的输出来发布示例输入。您也没有在问题中澄清确切的预期结果(可能有几种不同的方法来构造合并的数据)。你的问题是否得到解决并不重要,重要的是发布100%清晰的问题,因为未来的研究人员将访问此页面,并想知道他们的问题是否与你的问题相同。因此,迭代你的数组并计算键/值。你的问题写得不好。请不要张贴样本数据的屏幕截图。请通过复制粘贴var\u export($your array)
的输出来发布示例输入。您也没有在问题中澄清确切的预期结果(可能有几种不同的方法来构造合并的数据)。你的问题是否得到解决并不重要,重要的是发布100%清晰的问题,因为未来的研究人员将访问此页面,并想知道他们的问题是否与你的问题相同。