【发布时间】:2012-08-10 19:35:14
【问题描述】:
所以这个错误对我来说似乎很奇怪。我有一个带有两个必需参数的方法,但是当脚本进入第一个 for 循环时,两个参数中的一个似乎不再存在。
下面是一段代码:
public function getOptionsForParameters($params, $product){
// here the value of $product is 105
for($i = 0; $i<count($params); $i++){
// but here, $product no longer exists, so in the SQL query, it is empty
$sql = "SELECT *
FROM [table_name]
WHERE prm_id = ".(int)$params[$i]['prm_id']."
AND prd_id = ".(int)$product."
AND opt_status = 'active'";
}
// ...
}
我真的不明白为什么,因为在方法的开头和 for 循环之间绝对没有脚本。
另外,如果我在所有 for 循环之后打印变量,就在方法的“返回”之前,它的值为 105...在我看来 PHP 以某种方式为我的变量提供了一个范围,这很奇怪..
我已经为此苦苦挣扎了太久,但我在 Google 或 PHP.net 上没有找到与此相关的任何内容
有人知道我的脚本为什么会这样做吗?
顺便说一句:我的 PHP 版本是 5.3.10
非常感谢
【问题讨论】:
-
无法使用您发布的代码。请发布演示此行为的完整代码 sn-p,最好在 codepad.org 之类的地方。
-
cmets 在循环内的位置发生了什么?您是否正在擦除可变内容?它不存在还是为空?有区别。
-
缺少哪个变量,$product 或 $param,如果是 $param,它只是“内部”$param 还是整个变量...
-
如果将
var_dump($params)放在循环之前会产生什么? -
@Orbling -> 我在我的代码 sn-p 中发布的 cmets 甚至不在我的脚本中。绝对没有比您在此处看到的代码更多的代码。 (除了其余的方法,但问题在这之前)