2013-05-27 58 views
0

我有這樣的代碼: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>'; 
     $id == $r; 
    } 

} 
    echo 'pushing id = ' . $id . ' parrecid=' . $parrecid . '<br>'; 
    array_push($arrobj, $id, $parrecid); 

在當$ RK =「PARENT_RECORD_ID,在$ parrecid值應該理論得到填充。 同樣的情況爲$ id,如果$ rk ='ID'那麼......你得到的圖片。 但是,那永遠不會發生。兩個值都保持爲0. 任何想法爲什麼?

+3

''==是比較,'='是設定。 '使用$ parrecid = $ r;' – Farkie

回答

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; 
    } 

} 
+0

奇怪的事情: 如果我使用=那麼if條件是真實的每個值?!?! 如果我使用==,那麼它只適用於指定的值?!!?! – R0b0tn1k

+0

@ user117701,如果條件你必須使用==否則它不會工作。將值放入您使用的變量中=。是的,一開始看起來很奇怪,但你會習慣它,這是初學者的障礙。 –

0

使用=代替==。另外,在foreach循環之外聲明這些變量,否則它們將在每次調用循環時重置。

1

您的變量$ parrecid = 0;和$ id = 0;用for循環定義,所以更新後的值除非在for循環之前定義,否則不可讀,並且在賦值時使用正確賦值(=而不是==)運算符。

2

首先,使用=進行分配,如其他答案中所述。

第二件事是,你設定$parrecid$id後你的循環,你不馬上停止你循環,所以你也與下一個循環的運行再次改寫他們:$parrecid = 0; $id = 0;,他們又是0

一個解決辦法是設置外循環的變量:

$parrecid = 0; 
$id = 0; 
foreach($rec as $rk => $r){ 
    ... 
} 
+0

這不是像覆蓋整個範圍失敗那樣重寫值的問題。在for循環中聲明的任何東西都是不可讀的。 –

+0

如果範圍是錯誤的,爲什麼這個工作:http://codepad.org/xw5OjVLW請參閱:http://php.net/manual/en/language.variables.scope.php你的意思是在Java中是正確的,但不是PHP – bpoiss