如何将数组插入数组

时间:2019-12-12 19:41:05

标签: php arrays multidimensional-array

我在将数组插入数组时遇到问题。我的代码就像:

function routesL($location,$connexion){ //prend le id de quartier et récupere les quartiers disponibles pour deplacer

    $req = "SELECT idQArivee, transport
            FROM p1810512.Routes 
            WHERE idQDepart = '$location'";
    $res = mysqli_query($connexion,$req);
    $arr = array();
    $i=0;
    while($row = mysqli_fetch_assoc($res)){
        $new = array(
            'idQArivee'.$i = $row.'idQArivee',
            'transport'.$i = $row.'transport'
        );
        array_push($arr, $new);
        $i++;
    }
    if($arr == null){
        return null;
    }else
        return $arr;
    }

和功能 array_push()不起作用。 $ row 是一个具有两列 idQArivee transport 的表。我正在尝试将它们插入到数组中。

3 个答案:

答案 0 :(得分:2)

之后,您的错误似乎缺少;
$new = array(
        'idQArivee'.$i = $row.'idQArivee',
        'transport'.$i = $row.'transport'
    )

您无法连接$row.'idQArivee'的事实应该是$row['idQArivee']并与transport发生同上

因此解决方法是

$new = array(
        'idQArivee'.$i => $row['idQArivee'],
        'transport'.$i => $row['transport']
        );
$arr[] = $row;

或者简单地

$arr[] = array(
        'idQArivee'.$i => $row['idQArivee'],
        'transport'.$i => $row['transport']
        );
  

其他信息

     

要即使在LIVE环境中也能避免PHP错误,请将这4行添加到要调试的任何基于MYSQLI_的脚本的顶部   ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);。   这将迫使任何MYSQLI_错误生成一个可以在浏览器上看到的异常以及正常的PHP错误。

答案 1 :(得分:1)

您似乎在数组语句中缺少>和结尾的分号 例如

$new = array(
            'idQArivee'.$i => $row['idQArivee'],
            'transport'.$i => $row['transport']
        );

我不确定为什么要为每个数组的键分配唯一的值。

根据您将如何使用它们,您可能需要使用...

$arr[] = array(
            'idQArivee' => $row['idQArivee'],
            'transport' => $row['transport']
        );

并按@RiggsFolly提到的那样放弃推送。

答案 2 :(得分:1)

根据您想要的输出,这将追加您的增量(不是一种好方法):

while($row = mysqli_fetch_assoc($res)){
    $arr['idQArivee'.$i] = $row['idQArivee'];
    $arr['transport'.$i] = $row['transport'];
    $i++;
}

但是标准(更好)的方法是拥有一个多维数组:

while($row = mysqli_fetch_assoc($res)){
    $arr[] = $row;
}

或者简单地:

while($arr[] = mysqli_fetch_assoc($res));

如果您使用MySQL Native Driver,则只需:

$arr = mysqli_fetch_all($res, MYSQLI_ASSOC);

由于您在查询中指定了所有键,并且您正在获取关联,因此所有这些键仍将为您提供idQAriveetransport键。