<?php
$arr = array('fruit' => 'apple', 'veggie' => 'carrot');
print $arr['fruit'];  // apple
echo "<br>";
print $arr['veggie']; // carrot
echo "<br>";
define('fruit', 'veggie');
print $arr['fruit'];  // apple
echo "<br>";
print $arr[fruit];    // carrot
echo "<br>";
print $arr[veggie];    // carrot
echo "<br>";
?>
为什么
print $arr[fruit];    // carrot
echo "<br>";
print $arr[veggie];    // carrot会是这样的结果呢?

解决方案 »

  1.   

    define('fruit', 'veggie');
    很明显 fruit = veggieprint $arr[fruit]; 就等于 $arr[veggie] 
    造成这个问题,就是你的语法标准问题了。$arr['fruit'];这样就是你要的结果了。
      

  2.   

    define('fruit', 'veggie');print $arr[fruit]; // carrot// 这样会先检查常量,在检查字符串
    echo "<br>";
    print $arr[veggie]; // carrot //这个同理
      

  3.   

    define('fruit', 'veggie');定义一个常量fruit = "veggie";print $arr[fruit]; // 会先检查常量fruit ,在检查字符串"fruit";print $arr["fruit"];//就可以得到不同的答案定义常量的时候一般都是大写,例如 define('FRUIT', 'veggie');