Object中的数组是否通过值传递?

时间:2010-01-14 15:30:33

标签: php arrays

也许我忽视了一些事情,但我偶然发现了这个:

$employees = new stdClass();

$employee_id = 5;
$employee = array();
$employee["id"] = $employee_id;
$employee["name"] = "John;

$employees->$employee_id = $employee;

现在我想更改员工姓名:

$employee = $employees->$employee_id;
$employee["name"] = "Tom";

现在我有两个问题:

  1. 员工对象似乎不是通过引用传递的,因为员工中的员工仍然被命名为John。

  2. 如何检索员工姓名? echo {$ employee-> $ employee_id} [“name”]; 不起作用

  3. 感谢您的帮助,

    马丁

2 个答案:

答案 0 :(得分:2)

1)PHP很少通过引用传递。如果您想通过引用强制传递,请使用=&操作者:

$employees->$employee_id =& $employee;

在这里阅读更多内容: http://php.net/references

2)首先使用$employees->$employee_id相当难看,但这是一个可能的解决方案:

$current_employee =& $employee->$employee_id;
echo $current_employee['name'];

答案 1 :(得分:1)

你有一个额外的$,不应该在那里。

//$employees->$employee_id = $employee;     Wrong
$employees->employee_id = $employee;

使用美元,php使用var的值。例如...

$name = "car";
$obj->car = 5;
$obj->$name = 10;

echo $obj->car;  // outputs 10