我想要做這樣的事情,而無需使用額外的變量:屬性陣列
class className {
public static function func(){
return array('true','val2');
}
}
if(className::func()[0]) {
echo 'doğru';
} else {
echo 'Yanlış';
}
我想要做這樣的事情,而無需使用額外的變量:屬性陣列
class className {
public static function func(){
return array('true','val2');
}
}
if(className::func()[0]) {
echo 'doğru';
} else {
echo 'Yanlış';
}
className::func()[0]
被稱爲數組語法,而不是在所有的PHP版本有效的語法。它
將是
可用於PHP 5.4開始,
目前在2012年3月發佈的測試版
。對於早期的PHP版本,您需要在某處使用額外的變量來存儲從className::func()
返回的數組。
查看PHP 5.4 Array documentation的實施細節。
thanx很多答案! – Lupus 2012-01-18 16:49:16
用於擊敗我35秒; – 2012-01-18 16:53:26
Array Deferencing目前在PHP中不可用。它在PHP 5.4的桌子上。
在那之前,你將需要額外變量:
$arr = className::func();
if($arr[0]){
echo 'doğru';
}else{
echo 'Yanlış';
}
當別人注意,您目前不能做這種方式。如果你真的不能使用臨時變量(雖然我沒有看到一個理由不使用一個),你可以使用
if(current(className::func())) // or next() or reset()
但要確保你瞭解這些功能的文檔正確對待空數組。
參考:current
您不能(或者至少不應該)直接將表達式的結果傳遞給'array_shift()',因爲它通過引用接受輸入數組參數,因爲它修改了輸入陣列。 'current()'也是如此,但是我相信這並不會修改輸入數組。 – DaveRandom 2012-01-18 16:40:38
@DaveRandom:那麼爲什麼要避免呢?但是你是對的,'array_shift'不起作用。 – 2012-01-18 16:43:47
因爲如果你看看文檔,它確實會說(由於某種原因)'current()'把它作爲引用的參數。這個*應該*生成一個'E_STRICT',就像它處理'array_shift()'一樣,儘管我剛剛嘗試過,實際上並不是這樣,所以文檔可能是錯誤的。 – DaveRandom 2012-01-18 16:53:13
那麼,你可以在你的方法返回一個對象來代替。 這樣的東西:
class className{
public static function func(){
return (object)array('true'=>'true','val2'=>'val2');
}
}
echo className::func()->true;//Extra variables go away =)
PHP不支持這種方式的數組解引用。爲什麼你不能使用中間變量? – 2012-01-18 16:29:31
@Felix Kling PHP 5.4將具有以下功能:http://css.dzone.com/polls/what-new-feature-php-54 – feeela 2012-01-18 16:31:43
[訪問函數返回的數組](http:// stackoverflow.com/questions/1664362/),[在PHP中由函數返回的訪問數組](http://stackoverflow.com/questions/1459377/) – outis 2012-01-19 10:51:21