在PHP上使用相同的变量名可以吗?
我只是想知道我是否可以使用以下代码:在PHP上使用相同的变量名可以吗?,php,mysqli,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 = 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
等等?
比如说,在使用相同的变量名还是给变量不同的名称之间,哪一个更好、更安全?
我希望有人能解释一下。
之前谢谢您。如果您完成了myTable1,那么它是完全可以的,但是如果您打算在代码中的其他地方使用它,则不会,因为只有myTable2信息将保存在$result中,如果您遵循此原则,尤其是希望您将功能隔离到不同的功能中 如果你应用了这个,那么你就不会真正使用相同的变量,因为在这一点上,会有不同的范围,因此这不会是一个问题
简而言之,您不必重用变量,如果您的逻辑被分解为执行单个任务的函数,请不要将它们命名为
$result1
,result2
等。。。这是项目中的一个标志。如果使用相同的变量存储数据,则每次迭代都会用新值覆盖变量值,而while
语句之后的值是最后一次迭代。$temp
是while的局部变量,如果您以前没有定义它,那么可以这样使用
$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 |
+----+---------+---------+
+----+---------+---------+
| id | Col1 | Col2 |
+----+---------+---------+
| 3 | Value 1 | Value 2 |
| 5 | Value 1 | Value 2 |
| 6 | Value 1 | Value 2 |
| 8 | 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 |
+----+---------+---------+
| 1 | Value 1 | Value 2 |
| 2 | Value 1 | Value 2 |
| 3 | Value 1 | Value 2 |
| 4 | Value 1 | Value 2 |
+----+---------+---------+
+----+---------+---------+
| 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而不是$result1。
同样,如果您的“myTable2”是关于产品的,那么您可以使用$product而不是$result2。“我的意思是可以使用这样的代码吗?我应该像$result1$result2这样对变量进行不同的命名吗?”-在我看来是可以的,因为您查询的是两个不同的表。但是,这可能取决于您是否在同一文件中使用相同的代码,然后希望使用(回显)相同的变量。这取决于您希望如何使用该
$temp
变量。如果您在第二次循环之前使用它,那么它就可以了。否则,您只需在循环过程中替换并丢失第一个中的数据。您的编辑“比如说,在使用相同的变量名称还是给变量不同的名称之间,哪一个更好、更安全?”-现在使这个问题过于广泛,更不清楚我投票决定用哪一个来结束这个问题;新的答案并没有抓住这个问题,我并没有就此提交答案。这个问题不清楚,也太宽泛了,它是关于可变范围的。如果在同一个函数中定义并使用该变量,那么就可以了。否则,假设它是一个全局变量,我认为它是不安全的,因为其他类可能使用该变量这比最初发布的更进一步。嗨,弗雷德!那么OP对最初的问题进行了扩展?他们当然有。我有一种奇怪的感觉,这个问题从一开始就不清楚。请看修订。好的,我也展开了