【问题标题】:PHP: How to push Select results to multi-dimensional array (partially working)PHP:如何将选择结果推送到多维数组(部分工作)
【发布时间】:2015-06-15 17:10:49
【问题描述】:

我是 PHP 新手,希望有人可以帮助我。

我有一个 Select 查询,它返回(以及其他)来自 db 表中两列的值,“ID”和“en”。 从 Select 获取结果时 我想将每个项目的这两个值都存储在一个二维数组中

到目前为止,我有以下内容。 Select 本身可以正常工作,但是当推送到数组时,它只输出 Select 结果中的最后一项(它看起来也正确),所以 我的猜测不是将每个项目添加到数组中,而是每次都覆盖它时间

有人可以告诉我我在这里做错了什么吗? 另外,请让我知道这里是否应该首选 While 以外的内容。

我的 PHP:

<?php     
    $tbl = "TranslationsMain";  

    $conn = new mysqli($servername, $username, $password, $dbname);
    if($conn->connect_error){
        die("Connection failed: " . $conn->connect_error);
    } 
    $sql = "SELECT * FROM " . $tbl;
    $result = $conn->query($sql);   
    while($translations = $result->fetch_assoc()){
        $arr = array('ID' => $translations['ID'], 'en' => $translations['en']);
    }
    $conn->close();
    print_r($arr);
?>

电流输出(用小表测试):

Array ( [ID] => ID10 [en] => Value10 )

预期输出:

Array ( [ID] => ID1 [en] => Value1, [ID] => ID2 [en] => Value2, [ID] => ID3 [en] => Value3, ... [ID] => ID10 [en] => Value10  )

提前非常感谢, 迈克

【问题讨论】:

    标签: php arrays loops select multidimensional-array


    【解决方案1】:

    你得到这个输出是因为你覆盖了array 中的键。您需要保存到另一个 array(也不是二维):

    <?php     
        $tbl = "TranslationsMain";  
    
        $conn = new mysqli($servername, $username, $password, $dbname);
        if($conn->connect_error){
            die("Connection failed: " . $conn->connect_error);
        } 
        $sql = "SELECT * FROM " . $tbl;
        $result = $conn->query($sql);   
        while($translations = $result->fetch_assoc()){
    
            // ***** Create a new array here ***** //
            $arr[] = array('ID' => $translations['ID'], 'en' => $translations['en']);
    
        }
    
        $conn->close();
        print_r($arr);
    ?>
    

    给你:

    Array ( 
            [0] => Array ([ID] => ID1 [en] => Value1 ),
            [1] => Array ([ID] => ID2 [en] => Value2 ),
            [2] => Array ([ID] => ID3 [en] => Value3 ),
          )
    

    【讨论】:

    • 这很完美!非常感谢 - 我今天为此奋斗了很长一段时间。 :) 在我接受答案之前,我只是最后两个问题,因为我是新手,希望没关系? 1)虽然这里是一个好方法,还是你会提出不同的建议? 2) 你能告诉我如何从这个数组中回显一个特定的项目吗?
    • 不,这是存储多行的方式,虽然你已经接近了!
    • 再次感谢 - 很高兴知道!刚刚更新了我的评论。
    • 您想在创建一行后访问它?您只需为ID 执行echo $arr[0]['ID'];,然后为另一个执行en
    • 太棒了。 :) 再次感谢 - 这真的是一个巨大的帮助!
    【解决方案2】:

    $arr换成$arr[]再试试。

    【讨论】:

    • 也谢谢你!
    猜你喜欢
    • 1970-01-01
    • 2023-04-11
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2011-01-08
    相关资源
    最近更新 更多