1
 <?php
function try(){

$tutorial = array("D","C","B","A");
for( $i = 0 ; $i < count($tutorial) ; $i++ ){
    if( $tutorial[$i] == 'A' )
        $enum = 1;
    else if( $tutorial[$i] == 'B' )
        $enum = 2;
    else if( $tutorial[$i] == 'C' )
        $enum = 3;
    else if( $tutorial[$i] == 'D' )
        $enum = 4;
    echo "$enum". "<br/>";
}
  ?>

当我打印出变量 ENUM 时,它总是空白.. 有什么问题?

4

4 回答 4

0

if问题是您没有在语句中使用比较运算符。按照您编写它的方式,您正在通过循环将值分配'A'$tutorial[$i]每次。您需要使用==or ===,如下所示:

<?php
function try(){
    for( $i = 0 ; $i < count($tutorial) ; $i++ ) {
        if ( $tutorial[$i] == 'A' ) {
            $enum = 1;
        } elseif ( $tutorial[$i] == 'B' ) {
            $enum = 2;
        } elseif ( $tutorial[$i] == 'C' ) {
            $enum = 3;
        } elseif( $tutorial[$i] == 'D' ) {
            $enum = 4;
        }
    }
}
?>

==比较值而不检查类型

===比较值和类型

顺便说一句,我不明白你是如何将$tutorial变量放入你的函数中的。你没有传递它,你没有使用global. 存在于哪个范围内$tutorial?因为这也很可能是问题所在(如果更改=to==不起作用)。

于 2013-06-13T19:02:18.457 回答
0

您的运算符在if语句中不正确,因为您正在分配 ( =) 变量而不是比较 (=====)。此外,您使用的是保留字try(它是为异常保留的),这应该会导致您出现各种错误。像这样的东西应该工作:

function _try(){
    for($i = 0 ;$i < count($tutorial) ;$i++){
        if($tutorial[$i] == "A")
            $enum = 1;
        else if($tutorial[$i] == "B")
            $enum = 2;
        else if($tutorial[$i] == "C")
            $enum = 3;
        else if($tutorial[$i] == "D")
            $enum = 4;
    }
}

或者你总是可以使用控制结构switch()来解析循环:

function _try() {
    for($i = 0 ;$i < count($tutorial) ;$i++){
        switch($tutorial[$i]) {
            case("A"):
                $enum = 1;
                break;
            case("B"):
                $enum = 2;
                break;
            case("C"):
                $enum = 3;
                break;
            case("D"):
                $enum = 4;
                break;
            default:
                $enum = false;
        }
    }
}
于 2013-06-13T19:08:31.060 回答
0

我在你的代码中搞错了三件事

  1. try( catch) 关键字在您的代码中用作函数名称,请将名称更改为其他名称。

  2. 缺少大括号},好吧,这可能是一个错字。

  3. 逻辑错误,您使用=了代替==or===

您现在的代码变为:

 <?php
function tryThis(){
for( $i = 0 ; $i < count($tutorial) ; $i++ ){
    if( $tutorial[$i] == 'A' )
        $enum = 1;
    else if( $tutorial[$i] == 'B' )
        $enum = 2;
    else if( $tutorial[$i] == 'C' )
        $enum = 3;
    else if( $tutorial[$i] == 'D' )
        $enum = 4;
}
}
  ?>

编辑: 回答已编辑的问题....

看来您忘记调用该函数了.......该更改使其对我有用。

    <?php
    function tryThis(){

    $tutorial = array("D","C","B","A");
    for( $i = 0 ; $i < count($tutorial) ; $i++ ){
        if( $tutorial[$i] == 'A' )
            $enum = 1;
        else if( $tutorial[$i] == 'B' )
            $enum = 2;
        else if( $tutorial[$i] == 'C' )
            $enum = 3;
        else if( $tutorial[$i] == 'D' )
            $enum = 4;
        echo "$enum". "<br/>";
    }


   tryThis();     //functional cal here
      ?>
于 2013-06-13T19:09:37.450 回答
0

尝试这个。当您有条件时,请使用if比较运算符不是==赋值运算符=

$tutorial = array ('A', 'B','B', 'B', 'C', 'D');
for( $i = 0 ; $i < count($tutorial) ; $i++ ){
        if ($tutorial[$i] == 'A') {
            $enum = 1;
        }
        else if( $tutorial[$i] == 'B' ) {
            $enum = 2;
        }
        else if( $tutorial[$i] == 'C' ) {
            $enum = 3;
        }
        else if( $tutorial[$i] == 'D' ){
            $enum = 4;
        }
        echo $enum;
    }

// prints 122234
于 2013-06-13T19:01:47.537 回答