我有如上图所示的数组,我试图基于键合并所有嵌套数组,所以例如现在有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'))) {
$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);
$proba = array();
while($row = $result->fetch(PDO::FETCH_ASSOC)){
extract($row);
//....
if (empty($proba[$id])) {
$proba[$id] = array();
}
$proba[$id][] = $naziv;
}
另外我不明白你为什么使用extract
- 我想,$post_item
与$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"
}
}
我理解你想要做的简单回答:
foreach($input as $nr=>$data) {
foreach($data as $key=>$val) {
$output[$key][$nr] = $val;
}
}
这将简单地翻转层次结构级别。如果您只想收集值,这是一种方法。它保留了原始数组索引,但不是“[$ nr]”,你只需说“[]”就可以使它成为一个简单的顺序数组。
如果您将阵列显示为文本而不是那里的大图像,我将向您显示结果。