我正在尝试查看一系列记录(工作人员),在这个循环中,我调用一个函数,它返回另一个记录数组(每个工作人员的约会).
foreach($staffmembers as $staffmember)
{
$staffmember['appointments'] = get_staffmember_appointments_for_day($staffmember);
// print_r($staffmember['appointments'] works fine
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是,稍后在脚本中,我需要再次遍历记录,这次使用约会数组,但它们不可用.
foreach ($staffmembers as $staffmember)
{
//do some other stuff
//print_r($staffmember['appointments'] no longer does anything
}
Run Code Online (Sandbox Code Playgroud)
通常,我会在第二个循环中执行第一个循环中的函数,但是这个循环已经嵌套在另外两个循环中,这将导致相同的sql查询运行168次.
任何人都可以建议解决方法?
任何建议将不胜感激.
谢谢
foreach($staffmembers as &$staffmember) // <-- note the &
{
$staffmember['appointments'] = get_staffmember_appointments_for_day($staffmember);
// print_r($staffmember['appointments'] works fine
}
Run Code Online (Sandbox Code Playgroud)
从文档:
注意:除非引用了数组,否则对
foreach指定数组的副本进行操作,而不是对数组本身进行操作.foreach对数组指针有一些副作用.在foreach没有重置它的过程中或之后不要依赖数组指针.
和
作为PHP 5的,可以方便地通过前述修改数组元素
$value与&.这将分配引用而不是复制值.