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条件,必须使用==否则它将不起作用。要将值放入变量中,请使用=。是的,一开始看起来很奇怪,但你会习惯的,这对初学者来说是一个障碍。