将字母定义为不在循环内工作的数字

时间:2011-09-26 09:30:56

标签: php

请检查下面的代码,它在我期待结果时返回0.但是当我手动添加A+D时它会返回5.Am我在循环中做错了什么?

<?php
    define('A',1);
    define('B',2);
    define('C',3);
    define('D',4);
    define('E',5);

    //echo A+D; returns 5

    $name = 'EACE';

    $len = strlen($name);

    for($i = 0; $i<=$len; $i++)
    {
        $val += $name[$i]; 
    }
    echo $val;   //returns 0

?>

2 个答案:

答案 0 :(得分:3)

您需要使用constant(..)按名称获取常量的值。试试这个:

for ($i = 0; $i < strlen($name); $i++) {
    $val += constant($name[$i]);
}

答案 1 :(得分:1)

define('A',1);
define('B',2);
define('C',3);
define('D',4);
define('E',5);

//echo A+D; returns 5

$name = 'EACE';

$len = strlen($name);

$val = null;

for($i = 0; $i<=$len-1; $i++)
{
    $val += constant($name[$i]); 
}
echo $val;