作者Qiqi (泼泼)
看板PHP
标题[请益] function return 的 array 能否直接用 [] 取值?
时间Tue Jul 16 15:31:16 2013
function get_array()
{
return array('a', 'b', 'c');
}
我要怎麽直接取值?
右边这个不能用,$b = get_array()[1];
还是只能存在变数来用?
$arr = get_array();
$b = $arr[1];
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.69.166.241
1F:→ see7di:function get_array($x){$array=array('a','b','c'); 07/16 15:57
2F:→ see7di:return $array[$x];} 07/16 15:58
3F:→ see7di:或者 $y=(Is_array($y=get_array())) ? $y[0] : ''; 07/16 16:02
4F:推 liaosankai:PHP5.4.x 後才支援你写的方式 07/16 16:03
所以之前的版本只能透过改变结构的方式罗?
5F:→ see7di:这种呢? $y=($y=get_array() And isSet($y[0]))?$y[0]:''; 07/16 16:09
6F:→ tkdmaf:我相信1楼的写法,你整个都眼花掉了。 07/16 16:54
7F:→ tkdmaf:我的建议则是:即使新方法允许,也不一定会是最好的做法。 07/16 16:55
8F:推 a60301:推一楼 07/16 17:45
9F:→ gpmm:list 最直觉吧,刚刚看到第一个想倒也是 list :Q DK 大有回了 07/16 18:15
10F:推 a60301:推 list 也推 function 加参数 07/16 18:22
可惜list不适用,抱歉原文没详述
11F:→ tkdmaf:我不推一楼的原因是因为:如果function不是自己写的呢? 07/16 18:52
12F:→ tkdmaf:动手去改别人的function吗?那万一改了造成其他故障呢? 07/16 18:52
13F:→ tkdmaf:但是如果是原PO原本的写法,或是list就不会有这问题。 07/16 18:53
14F:推 a60301:function get_array_by_index($index) { 07/16 19:08
15F:→ a60301: $array = get_array(); 07/16 19:08
16F:→ a60301: if (isset($array[$i])) { 07/16 19:08
17F:→ a60301: return $array[$i]; 07/16 19:08
18F:→ a60301: } else { 07/16 19:09
19F:→ a60301: return false; 07/16 19:09
20F:→ a60301: } 07/16 19:09
21F:→ a60301:} 07/16 19:09
22F:→ a60301:我发现我上面是打$index下面是打$i(面壁 07/16 19:09
23F:→ see7di:不难看出发问者想偷懒,结果又出来一个funciton,哈哈!! 07/16 21:40
24F:→ tkdmaf:所以楼上,你成为绝世高手了吗?还是你找到高手了? 07/16 21:51
25F:→ tails32100:依发问者的需求 在5.4以下是无解的,只能改习惯Orz 07/16 21:53
26F:→ tkdmaf:其实我个人觉得……他原本那样写就行了。 07/16 22:08
27F:→ tkdmaf:不是着墨在程式非要精简到什麽样的省事地步。 07/16 22:09
28F:→ tkdmaf:而是着重在自己以及别人能不能看得懂。 07/16 22:09
29F:→ tkdmaf:如果你看一行code的时间比你看三行code还慢的话。 07/16 22:10
30F:→ tkdmaf:你就要认真考虑真的不是少就是好。 07/16 22:10
31F:嘘 see7di:楼上的,你不考虑程式的效能吗? 07/16 22:14
32F:→ tkdmaf:我看不出这边跟效能有什麽必然的关系。 07/16 22:18
33F:→ tkdmaf:重点是你想讲效能,请问你有写CODE去测效能? 07/16 22:18
34F:→ tkdmaf:还是你认为效能是嘴巴说这样快就一定快? 07/16 22:19
35F:→ tkdmaf:没有做过整体的效能评估的话,怎麽知道整体的快慢? 07/16 22:19
36F:→ gname:精简语法与效能似乎不是成绝对的关系... 07/16 22:24
37F:→ twsphere:我也会推...原本写那样就好... 07/16 23:24
是啊,最後我还是直接存变数再取来用
因为get_array()只是一个比喻用的function
→ tkdmaf:我不推一楼的原因是因为:如果function不是自己写的呢? 07/16 18:52
所以最後是偷懒不成了
→ see7di:不难看出发问者想偷懒,结果又出来一个funciton,哈哈!! 07/16 21:40
※ 编辑: Qiqi 来自: 210.69.166.241 (07/17 12:21)
38F:推 chph:如果return的阵列是associative array可以用extract 07/18 00:53
39F:→ chph:extract(get_array()); var_dump($a, $b, $c); 07/18 00:54