使用for-PHP循环的真正奇怪的bug

使用for-PHP循环的真正奇怪的bug,php,loops,for-loop,scope,Php,Loops,For Loop,Scope,所以这个虫子对我来说真的很奇怪。我有一个带有两个必需参数的方法,但是当脚本进入第一个for循环时,两个参数中的一个似乎不再存在 下面是一段代码: public function getOptionsForParameters($params, $product){ // here the value of $product is 105 for($i = 0; $i<count($params); $i++){ // but here, $product n

所以这个虫子对我来说真的很奇怪。我有一个带有两个必需参数的方法,但是当脚本进入第一个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'";
    } 
// ... 
}
公共函数getOptionsForParameters($params,$product){
//这里$product的值是105

对于($i=0;$i根据正常数组声明,您是否尝试过:

WHERE prm_id = ".(int)$params['prm_id'][$i]."

至少根据我提出的关于数组声明语法的问题,这似乎是一种正常的方式?

这不应该发生。你100%确定它消失了吗?isset($product)给了你什么

下面的代码做什么

public function getOptionsForParameters($params, $product){
    var_dump($product);
    for($i=0; $i<4; $i++){
        var_dump(isset($product));
    }
}
公共函数getOptionsForParameters($params,$product){
var_dump($产品);

对于($i=0;$i不可能与您发布的代码一起使用。请发布一个完整的代码段来演示此行为,最好是在类似的地方。注释在循环中的位置发生了什么?您正在擦除变量内容吗?它不存在还是为空?存在差异。如果我这是$param,它只是$param中的某个东西还是整个变量…如果将它放在循环之前,
var\u dump($params)
会产生什么?@Orbling->我在代码片段中发布的注释甚至不在我的脚本中。这里绝对没有比你看到的更多的代码。(除了该方法的其余部分,但问题是在此之前)我认为这应该可以解决OP。您当前的索引位置错误,这使得事情变得有点混乱。不一定。这样构造数组是完全有效的。除此之外,
$product
OP抱怨“丢失”,而不是
$params
@Jeremy1026这取决于数组的声明方式-尽管似乎大多数人都是按照我发布的代码所描述的方式声明数组的。OP很可能是在
[列][行]中创建的
方式或功能。我只是提供一个建议。@DaveRandom+1来自我。我只是对这个答案嗤之以鼻。它似乎合乎逻辑,但可能完全无用。直觉上它似乎是正确的,但不能保证。问题是$product而不是$params..isset($product)在for循环内部返回false,如果只使用带有isset($product)的for循环,而不使用任何其他命令(如构造SQL),该怎么办?更新答案中的简化代码?我已经尝试过了,在循环$product有值之前,就在循环开始时,它甚至不存在……然后我就没有想法了……这根本不应该发生!
$i<count($params);
$count = count($params);
$i<$count