2017-02-07 73 views
2

所以在PHP中,有各種各樣的assignment operators(如$a += $b$str .= $another_str),但有沒有辦法用內置函數(或其他,甚至)來做這樣的事情?PHP變量回歸自我

例如,是否有可能(甚至是值得的)來縮短這個:

$str = strtolower($str)

對象的角度來看,我們通常做這樣的事情:

$str->toLower()(僞代碼)

其中$str的值將是小寫的值。

但PHP有和/或做類似的事情?

編輯:關於這是字符串特定的,這只是一個例子。我也好奇,如果有可能「縮短」:

$array = array_values($array)

這是更好奇比什麼都重要,因爲我知道,這些功能都與一個返回值進行操作。問題更多的是關於是否有一個運算符將函數的返回值分配回相同的變量名稱。

$a += 4; 
// yields same result as 
$a = $a + 4; 

但是有沒有一個運算符可以做數學,連接和按位以外的東西的頂線。 (我相當肯定答案是「否」,但PHP世界是巨大的)

+1

一定程度上:http://stackoverflow.com/a/4423721/2119863 –

+0

@UnamataSanatarai真棒鏈接!謝謝! – zerodahero

回答

1

否。除非內置函數採用變量by-reference(如sort),否則內置函數將返回其結果讓你自己完成任務(如strtolower)。

如果你想有一個OO字符串的行爲,你可以使用Stringy

s('string')->toTitleCase()->ensureRight('y') == 'Stringy' 

如果你正在尋找縮短陣列呼叫,pipe operator RFC討論您可能感興趣的:

$ret = scandir($arg) 
    |> array_filter($$, function($x) { return $x !== '.' && $x != '..'; }) 
    |> array_map(function ($x) use ($arg) { return $arg . '/' . $x; }, $$) 
    |> getFileArg($$) 
    |> array_merge($ret, $$); 

這顯然清楚地表明scandir()作爲數據的初始來源,它通過array_filter以避免遞歸,array_map重新對pat進行重新驗證hs,一些本地函數,最後是一個合併結果和一個收集器變量。

+0

是的!!!管道操作員正是我所期待的! – zerodahero

0

不,因爲字符串不是一個對象,它是一種語言結構。