作者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