java - PHP 中哪里需要使用 & 运算符?

标签 java php

几年前,我曾经使用 PHP,PHP 发生了很多变化,特别是在 OOP 部分。

当时有必要在多个地方使用 & 运算符,特别是在处理对象实例时(当时 OOP 还非常初级)以避免复制对象实例。

与 4.0 相比,PHP 5.2 似乎有很多改进,但我有点困惑。

什么时候我必须在 PHP 中使用 & 运算符以避免从 Java 程序员的角度来看出现任何不愉快的意外情况?

示例:

$a = (&)new MyClass();    //Necessary?

function factoryMethod() {
  $a = (&)new MyClass();  //Necessary?
  return (&) $a;          //Necessary?
}

// Other cases?!

编辑:碰巧我的示例根本不需要 & 运算符。但我在哪里需要它呢?

最佳答案

简而言之:您的示例中没有任何地方。

如果我们正在处理对象,您不必使用reference operator完全没有。

如果您正在处理其他数据类型,最常见的引用操作是:

Passing by Reference

function foo(&$var)
{
    $var++;
}

$a=5;
foo($a);
// $a is 6 here

Returning References

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.

Looping with foreach

$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // break the reference with the last element

要小心,如果您的代码在下游再次使用 $value,那么最后一个 unset() 调用很重要。

第一种情况(通过引用传递)比第二种情况更常见,例如特别是在处理数组时:

$array = array(1, 2, 3, 4);
function modifyArray(&$data)
{
    unset($data[1]);
}
modifyArrax($array);
// $array = array(0 => 1, 2 => 3, 3 => 4)

关于java - PHP 中哪里需要使用 & 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1754399/

相关文章:

javascript - 将 PHP 多维数组转换为 JavaScript 符号

java - 在java中向数组添加新元素从左向右移动一步

java - 线程中的异常 "main"java.lang.NullPointerException [java]

java - 尝试打印 JAVA8 Collector 的结果时出现歧义错误

php - 如何从 tinymce 编辑器中获取插入的图像?

javascript - 如何集成codeigniter和javascript进行验证?

java - Java中通过链表进行递归

java - 字符串替换反斜杠

php - 将空日期保存到 mySQL 中的日期字段的最佳方法

php - 查找 PHP 脚本输出字符串的位置