所以在PHP中,有各种assignment operators,(如$a += $b
或$str .= $another_str
),但是有没有办法用内置的方式做这样的事情-in函数(或其他函数,甚至)?
例如,缩短这个是否可能(甚至是值得的):
$str = strtolower($str)
对象方面,我们通常会做类似的事情:
$str->toLower()
(伪代码)
$str
的值将是小写的值。
但PHP有和/或做过类似的事吗?
编辑:关于这是特定于字符串的,这只是一个例子。我也很好奇是否有可能缩短":
$array = array_values($array)
这更多是出于好奇而不是其他任何东西,因为我知道这些函数都以返回值运行。问题更多的是关于是否有运算符将函数的返回值分配回相同的变量名。
$a += 4;
// yields same result as
$a = $a + 4;
但是有一个运算符可以做除了数学,连接和按位之外的其他东西的顶行。 (我相当肯定答案是"没有",但PHP世界是巨大的)
答案 0 :(得分:1)
没有。除非内置采用变量引用(如sort
),否则内置函数将返回其结果,以便您自己进行赋值(如strtolower
)。
如果您想要OO字符串行为,可以使用Stringy
:
$FileContent = [System.IO.File]::ReadAllBytes("C:\<path to file>\4242.jpg")
$Fields = @{"filename"=$FileContent ; "name"="myFile"}
Invoke-RestMethod -Uri $Uri -ContentType 'multipart/form-data' -Method Post -Body $Fields
如果您希望缩短数组通话时间,pipe operator RFC讨论可能会让您感兴趣:
s('string')->toTitleCase()->ensureRight('y') == 'Stringy'
这清楚地,明确地显示
$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
重新验证路径,一些本地函数,最后是一个合并,将结果与收集器变量结合起来。
答案 1 :(得分:0)
不,因为字符串不是对象,它是一种语言结构。