我有这段代码:
foreach($rec as $rk => $r){
$parrecid = 0;
$id = 0;
if ($rk=='PARENT_RECORD_ID'){
echo $rk . ' = ' . $r . '<br>';
$parrecid == $r;
}
if ($rk=='ID'){
echo $rk . ' = ' . $r . '<br>';
$id == $r;
}
}
echo 'pushing id = ' . $id . ' parrecid=' . $parrecid . '<br>';
array_push($arrobj, $id, $parrecid);
理论上,当$ rk ='PARENT_RECORD_ID时,$ parrecid值应该被填充。 $ id的情况相同,如果$ rk ='ID'那么......你得到了图片。 但是,这从未发生过。两个值都保持为0。 有什么想法吗?
答案 0 :(得分:2)
首先,如其他答案中所述,使用=
进行分配。
第二件事是,在你的循环中设置$parrecid
和$id
后,你不会立即停止循环,所以你也会在下一个循环运行中再次覆盖它们:{{1 }},再次$parrecid = 0; $id = 0;
。
一种解决方案是在循环外设置变量:
0
答案 1 :(得分:1)
你的变量$ parrecid = 0;和$ id = 0;使用for循环定义更新的值,除非它们在for循环之前定义,并且在赋值时使用正确的赋值(=而不是==)运算符,否则更新的值将不可读。
答案 2 :(得分:1)
首先将$ parrecid和$ id的初始化从循环中取出
其次,不要使用==将值放入变量中。 $parrecid = $r;
代替$parrecid == $r;
您的代码应如下所示:
$parrecid = 0;
$id = 0;
foreach($rec as $rk => $r){
if ($rk=='PARENT_RECORD_ID'){
echo $rk . ' = ' . $r . '<br>';
$parrecid = $r;
}
if ($rk=='ID'){
echo $rk . ' = ' . $r . '<br>';
$id = $r;
}
}
答案 3 :(得分:0)
使用=
代替==
进行分配。另外,在foreach
循环之外声明这些变量,否则它们将在每次循环调用时重置。