簡體   English   中英

不確定PHP數組在分配時正在做什么

[英]Unsure what PHP array is doing upon assigning

我在這里有一個數據庫snippit代碼......我會發布相關的行而不進行錯誤檢查以使其變小...

if ($stmt->bind_result($row[0], $row[1]) === false) etc...

然后下面我...

<pre><code>
    //fill the array up with an array of rows, then increment $ddp.
    //$data[$ddp] is the row,
    //$data[$dpp][0] is the rows first argument,
    //$data[$dpp][1] is the rows 2nd argument returned etc...

    $ddp = 0; // this increments up every fetch

    while ($stmt->fetch()) {
        $data[$ddp][0] = $row[0];
        $data[$ddp][1] = $row[1];
        $ddp++;
    }
</code></pre>

我上面的方式工作....但這里是我以前做過的事情和一些奇怪的事情......

<pre><code>
    $ddp = 0; // this increments up every fetch

    while ($stmt->fetch()) {
        $data[$ddp++] = $row;
        // I ECHOd out $row here... and it did fetch 2 different rows...
    }
</code></pre>

會發生什么......當我這樣做的時候......

$data[$ddp++] = $row;

$data[0][0]$data[1][0]

那么為什么$row在2次讀取時有不同的值... $data最終與2個數組相同?

我甚至試過了

$data[] = $row;

和相同的結果。 我的修復是......

while ($stmt->fetch()) {
    $data[$ddp][0] = $row[0];
    $data[$ddp][1] = $row[1];
    $ddp++;
}

為什么?

很抱歉,如果這不是正確的地方,但我確實提前找到了解決方案,為了節省時間,我將答案和問題放在一起。

你的兩個作業正在做兩件微妙不同的事情。

while ($stmt->fetch()) {
    $data[$ddp][0] = $row[0];
    $data[$ddp][1] = $row[1];
    $ddp++;
}

這會在數組中創建兩個條目 - 第一個將具有索引[0][0] ,並在$row[0]分配值,依此類推。

另一方面,這個:

while ($stmt->fetch()) {
    $data[$ddp++] = $row;
    // I ECHOd out $row here... and it did fetch 2 different rows...
}

正在向數據庫添加一行,並在第一次運行時將整個$row添加到$data[0] 因此,從數據庫返回的任何內容都會按原樣添加 - 如果您從fetch()獲取一個數組,那么您將在數組中添加一個數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM