本人初学PHP,刚学到数组这块。
我定义一个数组
$wage=array(
"ABC"=>"abc",
"DEF"=>"def");
echo $wage["ABC"]得到abc,而echo $wage[0]却得不到任何值,不知道是怎么一回事,恳请各位大牛解释一下。

解决方案 »

  1.   

    我看有的书上说,访问数组默认有二种方式,一种就是$wage["ABC"],另一种则是$wage[0]
      

  2.   

    php不会傻到开辟2倍的空间来存放1份信息,除非人为指定你说的那个,有可能是从数据库资源取值,mysql_fetch_array()……mssql_fetch_array类似这种,除非指定参数,否则,的确同时返回关联下标数组和数字下标数组
      

  3.   

    他说的是“常见”还是“默认”啊?数组建立默认是数字下标,声明了字符串key的话,就只能使用字符串作下标$wage=array(
    "abc",
    "DEF"=>"def");试一下这个
      

  4.   

    $wage=array(
    "ABC"=>"abc",
    "DEF"=>"def");这样定义的话 $wage[0]能取到值才是怪事情呢$wage=array('abc');或者$wage=array(0=>'abc');才能取到
      

  5.   

    你使用print_r打印出来看看,就会明白的
      

  6.   

    你的例子使用的是哈希索引
    或者说php数组本身就是一个映射关系(key => value) 如果没有key 那么默认0,1,2...
    这样可以回答你的问题了
      

  7.   

    Php默认为数组指定数字下标,即:array('abc',
    'cdf');由于没有为指定的数据定义键值(即key),则系统默认为它们分配键值,从0开始类推 ;
    但是如果你自定义了键值:'ABC'=>''abc;则该数据的key为ABC,系统不在为它指定而外的key;
    如果你需要使用数字键值也可以将它们序列化 ,使用Array_key();函数:$kye = array_key($array);然后你就可以使用$key[0];访问了,但这好像没什么必要…
      

  8.   

    php的数组一组键值对,即一个键对应一个值,如果你没有指定键,那么会默认使用数字增量作键,调用时也必须指定键值才可以调用,$wage=array(
    "ABC"=>"abc",
    "DEF"=>"def");你这样定义的里面有两个键值对:ABC=>abc,DEF=>def。明显没有以0为键的值,当然打不出,不然你可以试试,$wage[0]='new';print_R($wage);看看里面的结构你就明白了
      

  9.   

    $wage[0] 是你没有输入key的前提下才行的通array(key=>value)
      

  10.   


    你已经定义了2个元素abc和def,而且这两个元素你也都定义了下标ABC和DEF,这个数组里只有2个元素$wage[ABC]=abc和$wage[DEF]=def,$wage[0]没有这个下标的元素。
      

  11.   

    php中的数组分为普通索引数组和关联数组,你定义的数组
    $wage=array(
    "ABC"=>"abc",
    "DEF"=>"def");
    就是一个关联数组.这时"ABC"是"abc"的索引,所以必须用 echo $wage["ABC"]得到abc;
    如果将数组该一下,变成一个普通数组
    $wage=array("abc","def");
    用echo $wage[0]就可得到abc.
      

  12.   


    正解,我记得each(),有4个键,0 1 key value
      

  13.   

    echo 只是 一个简单的输出语句,
    对于数组呢,要用print_r才行的,print与print_r的区别就是不能输出复杂的数据,像数组那样。