如何基于键合并嵌套数组?

时间:2019-04-06 21:27:02

标签: php arrays array-merge

PHP array

我有一个如上图所示的数组,我试图基于键合并所有嵌套的数组,因此例如现在有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);

3 个答案:

答案 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]”。

如果您将数组显示为文本而不是那里的大图像,我将向您显示结果。

相关问题