在ruby中,很多方法都有!
标记,这通常意味着变量将被修改。所以你可以做到
p "HELLO".downcase!
与
相同s = "HELLO".downcase
p s
在php中你可以使用带有&符号的指针。变量之前的符号,以便将其修改到位,或将var作为指针处理。但是,是否存在函数修饰符或变量修饰符,以允许对等变量进行修改
$str = "hi world";
str_replace("hi", "world", &$str)
答案 0 :(得分:2)
即使在Ruby中,!
版本的函数也是专门为修改变量而创建的替代版本。即downcase
和downcase!
是两个完全不同的函数,!
只是一个命名约定。
在PHP中,您可以通过引用将变量传递给任何函数,如您自己所示,但这可能不一定会给您预期的结果,完全取决于函数内部对变量的作用。要获得类似于Ruby的结果,您必须定义每个修改的函数的替代版本:
// PHP doesn't allow ! in function names, using _ instead
function str_replace_($needle, $replacement, &$haystack) {
$haystack = str_replace($needle, $replacement, $haystack);
}
答案 1 :(得分:1)
PHP中没有指针 - 只有引用。如果您想了解可以使用它们的方法,可以找到以下链接:
http://php.net/manual/en/language.references.php
您想要返回引用,请阅读此示例:
<?php
class foo {
public $value = 42;
public function &getValue() {
return $this->value;
}
}
$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42.
$obj->value = 2;
echo $myValue; // prints the new value of $obj->value, i.e. 2.
?>
答案 2 :(得分:0)
您无法修改函数的行为,尽管某些函数将指针作为参数进行修改。这些函数通常返回一个布尔值,以指示函数是否成功。