$arr = explode(',','a,b,c,d,e');
echo $arr[0];但是如何才能这样:
explode(',','a,b,c,d,e')[0]我getType(explode(',','a,b,c,d,e'))得到的就是数组类型啊,为什么不能在数组类型后面直接跟着下标?
echo $arr[0];但是如何才能这样:
explode(',','a,b,c,d,e')[0]我getType(explode(',','a,b,c,d,e'))得到的就是数组类型啊,为什么不能在数组类型后面直接跟着下标?
(explode(',','a,b,c,d,e'))[0] 试试
可能[]和函数有优先级问题,语法解析出错
<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];
?>
其实钻牛角尖也没什么不好,反而会是自己对于语言的理解更深刻,促进以后更有效的利用语言,呵呵。比如:我想直接得到数组的倒数第二个,php不行,必须绕一下 echo $arr[sizeof($arr)-2],而perl就可以直接$arr[-2],多爽?多用用奇巧淫技,拒绝为一件简单的事使用多行的,大量的函数,用精巧而直白的方式完成任务,总是好的追求嘛~