“foreach”导致我的功能行为不端

时间:2016-01-18 22:36:55

标签: php arrays 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"B echo "Bravo"C echo "Charlie"

但是,输出如下:

Alpha Alpha Alpha

错误日志中没有错误,所以我猜我必须犯一些与语法无关的错误。我在echo $item;之前添加了myFunction,输出如下:

AAlpha BAlpha CAlpha

这意味着$ item已正确分配A,B和C.为什么myFunction不能像预期的那样工作?

提前致谢!

4 个答案:

答案 0 :(得分: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);
    }

?>

答案 1 :(得分:1)

在您的函数上设置$ item 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);
    }

答案 2 :(得分:1)

另外,你要将变量传递给你的函数还是什么?否则,就像现在一样,它应该只输出“错误”。

你的功能没有参数。

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

如何传递$ item以便您的函数可以实际工作:

function myFunction($item) {

因此:

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

答案 3 :(得分: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);
    }

?>