我有一个如上图所示的数组,我试图基于键合并所有嵌套的数组,因此例如现在有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);
答案 0 :(得分:1)
$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
是相同。
答案 1 :(得分:1)
我像您一样创建了一个演示,这是代码:
$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"
}
}
答案 2 :(得分:0)
对于我了解您要执行的操作的简单答案:
foreach($input as $nr=>$data) {
foreach($data as $key=>$val) {
$output[$key][$nr] = $val;
}
}
这将简单地翻转层次结构级别。如果您只想收集值,这是一种方法。它保留了原始的数组索引,但是您可以说“ []”以使其成为简单的顺序数组,而不是“ [$ nr]”。
如果您将数组显示为文本而不是那里的大图像,我将向您显示结果。