2016-01-18 35 views
1

我想作以下工作:「的foreach」導致我的功能無法正常運作

<?php 

$item1 = A; 
$item2 = B; 
$item3 = C; 

$array = array($item1, $item2, $item3); 

function myFunction() { 
    if ($item = "A") { 
     echo "Alpha "; 
     } 
    elseif ($item = "B") { 
     echo "Bravo "; 
     } 
    elseif ($item = "C") { 
     echo "Charlie "; 
     } 
    else { 
     echo "Error"; 
     } 
    } 

foreach ($array as $item) { 
    myFunction(); 
    } 

?> 

預期的效果是,對於每個項目,如果該值Aecho "Alpha"Becho "Bravo"Cecho "Charlie"

然而,輸出如下:

Alpha Alpha Alpha 

有在錯誤日誌中沒有任何錯誤,所以我猜我必須做出某種錯誤不涉及語法。我添加了一個echo $item;myFunction之前,輸出如下:

AAlpha BAlpha CAlpha 

這意味着,$項目已被正確分配A,B和預期一樣C.爲什麼不myFunction的工作?

在此先感謝!

回答

2

1)=是賦值運算符,不能用於比較。改爲使用=====

2)您分配了$item1 = A,但是比較了$item = "A"。但是A"A"通常是不同的。

3)您沒有將$item傳遞給函數。

在第一if聲明分配"A"$item,然後打印出"Alpha"「如果"A"」。

你的代碼也許應該是這個樣子:

<?php 

$item1 = "A"; 
$item2 = "B"; 
$item3 = "C"; 

$array = array($item1, $item2, $item3); 

function myFunction ($item) { 
    if ($item == "A") { 
     echo "Alpha "; 
     } 
    elseif ($item == "B") { 
     echo "Bravo "; 
     } 
    elseif ($item == "C") { 
     echo "Charlie "; 
     } 
    else { 
     echo "Error"; 
     } 
    } 

foreach ($array as $item) { 
    myFunction ($item); 
    } 

?> 
+0

謝謝,我嘗試使用==代替,但這次我沒有輸出。 – Daryl

+0

那麼,你分配了'$ item1 = A'而不是'$ item1 =「A」'。有一個區別。 –

+0

我已經爲每個任務添加了雙引號,但我仍然沒有輸出。 – Daryl

1

設置$項目parametar你的函數。

$item1 = "A"; 
$item2 = "B"; 
$item3 = "C"; 

$array = array($item1, $item2, $item3); 


function myFunction($item){ 
    if($item == "A"){ 
     echo 'Alpha'.'<br/>'; 
    } 

    elseif ($item == "B") { 
     echo 'Bravo'.'<br/>'; 
    } 

    elseif ($item == "C") { 
     echo 'Charlie'.'<br/>'; 
    } 

} 


foreach ($array as $item) { 
    myFunction($item); 
    } 
+0

謝謝,那是問題之一! – Daryl

1

此外,你打算將變量傳遞給你的函數或什麼?否則,就像現在一樣,它只應輸出「錯誤」。

你的函數沒有參數。

foreach ($array as $item) { 
myFunction(); 
} 

如何傳遞$項目,使您的函數可以實際工作:

function myFunction($item) { 

,因此:

foreach($array as $item) { 
myFunction($item); 
} 
+0

謝謝保羅,我已經得到了這個問題的答案。我應該使用==而不是=進行比較,並且我沒有將$ item傳遞給該函數。 – Daryl

+0

爲什麼這麼粗魯?此外,還有其他兩個答案指出了這一點。 –

+0

我不是粗魯的,赫爾曼。然而,當我只是想幫助某人時,你對我無禮。如果你覺得我很粗魯,那是因爲你選擇這樣閱讀。如果我的意圖是粗魯的,我將不會首先回應。如果我發佈了已發佈的內容,那是因爲他們是在發佈我的過程中發佈的。最後,如果你可以停止攻擊我並批評我發佈的所有內容,那就太棒了。 – Paul

0
<?php 

$item1 = "A"; 
$item2 = "B"; 
$item3 = "C"; 

$array = array($item1, $item2, $item3); 

function myFunction ($item) { 
    if ($item == "A") { 
     echo "Alpha "; 
     } 
    elseif ($item == "B") { 
     echo "Bravo "; 
     } 
    elseif ($item == "C") { 
     echo "Charlie "; 
     } 
    else { 
     echo "Error"; 
     } 
    } 

foreach ($array as $item) { 
    myFunction ($item); 
    } 

?>