可以在PHP上使用相同的变量名吗?

  • 本文关键字:变量名 PHP php mysqli
  • 更新时间 :
  • 英文 :


我只是想知道如果我使用以下代码可以吗:

$query = mysqli_query($db, "SELECT * FROM myTable1")
while($result = mysqli_fetch_assoc($query)){
$temp = $result['id'];
}

然后我像这样获取另一个表:

$query = mysqli_query($db, "SELECT * FROM myTable2")
while($result = mysqli_fetch_assoc($query)){
$temp = $result['id'];
}

我使用相同的变量$result$temp.
我的意思是可以使用这样的代码吗?我应该像$result1$result2等一样以不同的方式命名变量吗? 假设,在使用相同的变量名称
或给变量不同的名称之间哪个更好,更安全?
我希望有人能解释一下。
之前谢谢你。

如果您遵循 SOLID 原则,尤其是单一责任原则希望您将功能隔离到不同的功能中。

如果您确实应用了它,那么您实际上并没有使用相同的变量,因为此时会有不同的范围,因此这不是问题。

简而言之,您不必重用变量,如果您的逻辑被分解为执行单个任务的函数,请不要将它们命名为$result1result2等......这是项目中代码异味的标志。

如果您完成了 myTable1,那么它完全没问题,但如果您要在代码中的其他地方使用它,那么不,因为只有 myTable2 信息将保存在$result

如果您使用相同的变量来存储数据,则每次迭代时变量值都将被新值覆盖,并且while语句之后的值是最后一次迭代。

如果你以前没有定义过,$temp是一个局部变量,所以这样使用是安全的。

$query,从语言允许你做的事情来看,是的,你可以这样使用它。

基本 PHP 代码

假设您想将数据库中的一些信息存储到变量中,然后在进行更多编码之前使用它。

所以我们有这个示例代码。将id值存储到变量$temp。我们得到的输出是什么?

$query = mysqli_query($db, "SELECT * FROM myTable1")
while($result = mysqli_fetch_assoc($query)){
$temp = $result['id'];
}

例如,表myTable1包含这样的数据。

+----+---------+---------+
| id |  Col1   |  Col2   |
+----+---------+---------+
|  1 | Value 1 | Value 2 |
|  2 | Value 1 | Value 2 |
|  3 | Value 1 | Value 2 |
|  4 | Value 1 | Value 2 |
+----+---------+---------+

我们的$temp变量将等于4。因为您从该表中获取所有内容,然后获取出现的每一个结果。现在,让我们使用该变量。

echo 'Selected id from table myTable1 equals ' . $temp;

这导致

从表 myTable1 中选择的 id 等于 4

然后,我们从另一个名为myTable2的表中获取数据。

$query = mysqli_query($db, "SELECT * FROM myTable2")
while($result = mysqli_fetch_assoc($query)){
$temp = $result['id'];
}

该表包含如下数据。

+----+---------+---------+
| id |  Col1   |  Col2   |
+----+---------+---------+
|  3 | Value 1 | Value 2 |
|  5 | Value 1 | Value 2 |
|  6 | Value 1 | Value 2 |
|  8 | Value 1 | Value 2 |
+----+---------+---------+

同样,同样的事情发生了,$temp变量现在等于8.让我们以同样的方式使用它。

echo 'Selected id from table myTable2 equals ' . $temp;

这导致

从表 myTable2 中选择的 id 等于 8

最终结果

表 myTable1 中的选定 id 等于 4
表 myTable2 中的选定 id 等于 8

结论

这里没有错。如果你愿意,你可以这样做。但请注意,如果您有更多的代码行,不建议多次使用同名变量。

更复杂的 PHP 代码

相同的表、结构和数据。让我们更改代码。

function printIndex($id) {
echo 'Index = ' . $id;
}
$query = mysqli_query($db, "SELECT * FROM myTable1")
while($result = mysqli_fetch_assoc($query)){
$temp = $result['id']; // Store id for further use
}
$query = mysqli_query($db, "SELECT * FROM myTable2")
while($result = mysqli_fetch_assoc($query)){
$temp = $result['id']; // Store id for further use
}
printIndex($temp); // Print stored id

输出

索引 = 8

结论

编码错误。您必须使用唯一的变量名称来防止这种情况。

您可以在逻辑上使用相同的变量名称。它不会给你一个错误(有时如果你在这种情况下使用这些变量在你的循环之外,它可能会给你)。但是,不建议对变量名称使用通用关键字。

而是尝试根据您的模型命名变量。请看下面的例子,

如果你的"myTable1"是关于学生的,那么你可以使用$student而不是$result 1。 同样,如果您的"myTable2"是关于产品的,那么您可以使用$product而不是$result 2。

最新更新