代码之家  ›  专栏  ›  技术社区  ›  Mona Coder

将第二个查询结果作为关联数组推送到从fetch_assoc获取的现有数据中的问题

  •  0
  • Mona Coder  · 技术社区  · 6 年前

    我试图合并两个SQL查询结果,而第一个查询总是返回一行,第二个查询可能返回0到多行。我用PHP将第一个查询结果加载到一个数组中,如

    $data = [];
    while($row = $result->fetch_assoc()) {
      $data=$row;
    }
    

    while($rowtwo = $resulttwo->fetch_assoc()) {
      array_push($data, array('per' => $row['per'],
    'duration' => $row['duration']));
    }
    

    输出为 print_r() 看起来像

    Array
    (
        [term] => 0
        [available] => 1
        [0] => Array
            (
                [per] => 2019-09-04
                [duration] => 14
            )
    
        [1] => Array
            (
                [per] => 2019-09-04
                [duration] => 15
            )
    
        [2] => Array
            (
                [per] => 2019-09-04
                [duration] => 15-30
            )
    
        [3] => Array
            (
                [per] => 2019-09-04
                [duration] => 16
            )
    )   
    

    但我需要将第二个查询作为数组存储在数组中,如

    Array
    (
        [term] => 0
        [available] => 1
        [newarray] = [
                [0] => Array
                    (
                        [per] => 2019-09-04
                        [duration] => 14
                    )
    
                [1] => Array
                    (
                        [per] => 2019-09-04
                        [duration] => 15
                    )
    
                [2] => Array
                    (
                        [per] => 2019-09-04
                        [duration] => 15-30
                    )
    
                [3] => Array
                    (
                        [per] => 2019-09-04
                        [duration] => 16
            )
            ]
    )   
    
    0 回复  |  直到 6 年前
        1
  •  2
  •   Nick SamSmith1986    6 年前

    在第一个查询之后和第二个查询之前,添加 newentry 元素添加到您的 $data 大堆然后将值推入其中,而不是 :

    $data = [];
    while($row = $result->fetch_assoc()) {
      $data = $row;
    }
    // ...
    $data['newentry'] = array();
    while($rowtwo = $resulttwo->fetch_assoc()) {
      array_push($data['newentry'], array('per' => $rowtwo['per'],
                                          'duration' => $rowtwo['duration']));
    }
    

    注意你有 $row 在第二个循环中。我已经改正了 $rowtwo