gpt4 book ai didi

php - 不确定分配时 PHP 数组在做什么

转载 作者:可可西里 更新时间:2023-11-01 00:42:38 26 4
gpt4 key购买 nike

我这里有一个数据库代码片段...我将发布相关行而不进行错误检查以使其更小...

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 在两次提取中有不同的值,那为什么……$data 怎么会得到两个相同的数组呢?

我什至尝试过

$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() 获取一个数组,那么您就是在您的数组中添加一个数组。

关于php - 不确定分配时 PHP 数组在做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30444072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com