在php函数中使用指针或修饰符

时间:2011-05-16 03:10:05

标签: php

在ruby中,很多方法都有!标记,这通常意味着变量将被修改。所以你可以做到

p "HELLO".downcase!

相同
s = "HELLO".downcase
p s

在php中你可以使用带有&符号的指针。变量之前的符号,以便将其修改到位,或将var作为指针处理。但是,是否存在函数修饰符或变量修饰符,以允许对等变量进行修改

$str = "hi world";
str_replace("hi", "world", &$str)

3 个答案:

答案 0 :(得分:2)

即使在Ruby中,!版本的函数也是专门为修改变量而创建的替代版本。即downcasedowncase!是两个完全不同的函数,!只是一个命名约定。

在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)

您无法修改函数的行为,尽管某些函数将指针作为参数进行修改。这些函数通常返回一个布尔值,以指示函数是否成功。