$arr = explode(',','a,b,c,d,e');
echo $arr[0];但是如何才能这样:
explode(',','a,b,c,d,e')[0]我getType(explode(',','a,b,c,d,e'))得到的就是数组类型啊,为什么不能在数组类型后面直接跟着下标?

解决方案 »

  1.   

    通常我也会加个变量..楼主
    (explode(',','a,b,c,d,e'))[0]  试试
    可能[]和函数有优先级问题,语法解析出错
      

  2.   

    你的牛角尖钻得还真有水平,-_-!简单地说是不能用表达式做变量名深奥的说php的数组是个哈希表,去研究一下换个说法是,explode函数产生的是一个实体,而变量名是个称呼(下标是用于变量名的),实体与下标不应混用从形式逻辑的角度这叫“偷换概念”
      

  3.   

    举个简单的例子。
    <script>
    var str=new Array(1,2,3)[0];
    alert(str);
    </script><?php
    $str=array(1,2,3)[0];
    echo ($str);
    ?>
    为什么在JS中可以在PHP中就不可以呢?
    我的理解是这样的。
    Array()在JS中本身就是一个OBJECT
    而array()在PHP中只是一个FUNCTION,它是通过函数返回值的方式把一个数组对象返回给一个变量。
    所以PHP中并不能直接用下标的方式,因为严格来说array()并不是一个数组对象。
    你会在写代码的时候写上诸如
    <?php
    function show()
    {}
    $str=show()[0];
    ?>
      

  4.   


    其实钻牛角尖也没什么不好,反而会是自己对于语言的理解更深刻,促进以后更有效的利用语言,呵呵。比如:我想直接得到数组的倒数第二个,php不行,必须绕一下 echo $arr[sizeof($arr)-2],而perl就可以直接$arr[-2],多爽?多用用奇巧淫技,拒绝为一件简单的事使用多行的,大量的函数,用精巧而直白的方式完成任务,总是好的追求嘛~