<?php
$arr=array('1','2','3','4');
function aaa($arr){
foreach ($arr as $k => $v) {
    if ($v=4) {
        return 1;
    }else{
        return 2;
    }
}
}
echo aaa($arr);
结果是1,不应该是2221吗,不懂啊 完全

解决方案 »

  1.   

    if($v==4)少了个等于号
      

  2.   

    $a == $b 等于 TRUE,如果 $a 等于 $b。 
    $a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同。(PHP 4 引进) 
    $a != $b 不等 TRUE,如果 $a 不等于 $b。 
    $a <> $b 不等 TRUE,如果 $a 不等于 $b。 
    $a !== $b 非全等 TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进) 
    $a < $b 小与 TRUE,如果 $a 严格小于 $b。 
    $a > $b 大于 TRUE,如果 $a 严格 $b。 
    $a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。 
    $a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。 
      

  3.   

    在一个funcition中,你return一次之后,后面就不会return了,所以只返回一次
      

  4.   

    试试这样写
    <?php
    $arr=array('1','2','3','4');
    function aaa($arr){
    $str='';
    foreach ($arr as $k => $v) {
        if ($v==4) {
           $str.=1;
        }else{
             $str.=2;
        }
    }
    return $str;
    }
    echo aaa($arr);
      

  5.   

     if ($v=4)
    得到true,执行 return程序不会再向下运行。
      

  6.   

    如果你要返回 2221这代码你就写了两个bug,=  和 ==
    return就结束掉了,
      

  7.   

     if ($v=4) 改成if ($v==4) 即可<?php
    $arr=array('1','2','3','4');
    function aaa($arr){
    $str='';
    foreach ($arr as $k => $v) {
        if ($v==4) {
           $str.=1;
        }else{
             $str.=2;
        }
    }
    return $str;
    }
    echo aaa($arr);
      

  8.   

    两个问题
    1.符号用错了
    if ($v=4) {
    改为
    if ($v==4) {=是赋值,$v=4表示把4赋值给$v
    ==才是比较相等的运算符2.return调用的时机不对foreach ($arr as $k => $v) {
        if ($v=4) {
            return 1;
        }else{
            return 2;
        }
    }你这样只判断一次就返回了,根本没有进行循环的处理。
    改为这样就可以了
    $arr=array('1','2','3','4');
    function aaa($arr){
        $result = array();
        foreach ($arr as $k => $v) {
            if ($v==4) {
                $result[] = 1;
            }else{
                $result[] = 2;
            }
        }
        return implode('',$result);
    }
    echo aaa($arr);返回2221