【问题标题】:Parse error while comparing int values in a if statement在 if 语句中比较 int 值时解析错误
【发布时间】:2025-12-07 19:30:02
【问题描述】:

目前我正在研究一个函数,该函数应该改变这样一个数组的 pos 值(int 值):

$comb = array(
    'A' => array('pos' => 3, 'lett' => 'C'),
    'B' => array('pos' => 4, 'lett' => 'D'),
    );

应该执行我需要的功能如下:

function change($comb) {
    foreach ($comb as $value) {
        if($value['pos']== 1) {
            $value['pos'] = 4;
        } else {
            $value['pos']--;
        }
    }
}

我不明白为什么在代码执行过程中,if 条件行会出现一般的解析错误。我尝试将 $comb ['pos'] 转换为 int,但这似乎并没有解决问题。

有什么想法吗?

【问题讨论】:

  • 请注意,您对$value['pos'] 的调整是没有意义的,因为$value 不是对$comb 数组中条目的引用,而是您正在更改的值的副本
  • 运行代码,没有发现解析错误。
  • 但是你到底得到了什么错误信息?
  • 你想要的输出是什么?
  • 我需要,通过实现一次函数,每个元素的pos值分别变为3和4。

标签: php parsing if-statement casting int


【解决方案1】:

如果你真的想改变 $comb 你应该把它作为参考(& 登录参数)

function change(&$comb) {
    foreach ($comb as $key => $value) {
        if($value['pos']== 1) {
            $comb[$key]['pos'] = 4;
        } else {
            $comb[$key]['pos']--;
        }
    }
}

【讨论】: