php变量未传递值
我有以下代码:php变量未传递值,php,Php,我有以下代码: 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>';
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);
foreach($rec as$rk=>r){
$parrecid=0;
$id=0;
如果($rk=='PARENT\u RECORD\u ID'){
回声$rk'='.$r'
';
$parrecid==$r;
}
如果($rk=='ID'){
回声$rk'='.$r'
';
$id==$r;
}
}
回显“推送id=”$身份证。”parrecid='$帕雷西德。”
';
数组推送($arrobj,$id,$parrecid);
理论上,当$rk='PARENT\u RECORD\u ID时,$parrecid值应该被填充。
$id的情况相同,如果$rk='id',则。。。你明白了。
然而,这种情况从未发生过。两个值都保持为0。
你知道为什么吗?用
=
代替=
进行作业。另外,在foreach
循环之外声明这些变量,否则它们将在每次调用循环时重置。使用=
进行赋值,而不是=
。另外,在foreach
循环之外声明这些变量,否则它们将在每次调用循环时重置。您的变量$parrecid=0;$id=0;使用for循环定义,因此除非在for循环之前定义更新的值,否则更新的值将不可读,并在赋值时使用正确的赋值(=而不是==)运算符。您的变量$parrecid=0;$id=0;使用for循环定义,因此除非在for循环之前定义了更新的值,否则更新的值将不可读,并且在赋值时使用正确的赋值(=而不是==)运算符。首先,使用=
进行赋值,如其他答案中所述
第二件事是,在循环中设置了$parrecid
和$id
之后,不会立即停止循环,因此在下一次循环运行时也会使用:$parrecid=0覆盖它们$id=0代码>,它们又是0
一种解决方案是在循环外部设置变量:
$parrecid = 0;
$id = 0;
foreach($rec as $rk => $r){
...
}
首先,使用=
完成其他答案中提到的作业
第二件事是,在循环中设置了$parrecid
和$id
之后,不会立即停止循环,因此在下一次循环运行时也会使用:$parrecid=0覆盖它们$id=0代码>,它们又是0
一种解决方案是在循环外部设置变量:
$parrecid = 0;
$id = 0;
foreach($rec as $rk => $r){
...
}
首先将$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;
}
}
$parrecid=0;
$id=0;
foreach($rec as$rk=>r){
如果($rk=='PARENT\u RECORD\u ID'){
回声$rk'='.$r'
';
$parrecid=$r;
}
如果($rk=='ID'){
回声$rk'='.$r'
';
$id=$r;
}
}
首先将$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;
}
}
$parrecid=0;
$id=0;
foreach($rec as$rk=>r){
如果($rk=='PARENT\u RECORD\u ID'){
回声$rk'='.$r'
';
$parrecid=$r;
}
如果($rk=='ID'){
回声$rk'='.$r'
';
$id=$r;
}
}
=
用于比较,=
用于设置<代码>使用$parrecid=$r代码>=
用于比较,=
用于设置<代码>使用$parrecid=$r代码>这不是重写值的问题,而是完全的范围失败。在for循环内部声明的任何内容在其外部都是不可读的。如果作用域是错误的,为什么这样做:请参阅:您的意思在Java中是正确的,但在PHPIt中不是重写值的问题,而是完全的作用域失败。for循环中声明的任何内容在其外部都是不可读的。如果作用域错误,为什么会这样:请参阅:您的意思在Java中是正确的,但在PHPStrange中不是这样的:如果我使用=那么If条件对每个值都是真的?!?!如果我使用==那么它只对指定的值是真的@user117701,对于if条件,必须使用==否则它将不起作用。要将值放入变量中,请使用=。是的,一开始似乎很奇怪,但你会习惯的,这对初学者来说是一个障碍。奇怪的事情:如果我使用=那么If条件对每个值都是真的?!?!如果我使用==那么它只对指定的值是真的@user117701,对于if条件,必须使用==否则它将不起作用。要将值放入变量中,请使用=。是的,一开始看起来很奇怪,但你会习惯的,这对初学者来说是一个障碍。