也许我忽视了一些事情,但我偶然发现了这个:
$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";
现在我有两个问题:
员工对象似乎不是通过引用传递的,因为员工中的员工仍然被命名为John。
如何检索员工姓名? echo {$ employee-> $ employee_id} [“name”]; 不起作用
感谢您的帮助,
马丁
答案 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