我有一个从数据库返回的数组,如下所示:
$data = array(201 => array('description' => blah, 'hours' => 0),
222 => array('description' => feh, 'hours' => 0);
Run Code Online (Sandbox Code Playgroud)
在下一段代码中,我正在使用a foreach并检查另一个表中的键.如果下一个查询返回数据,我想用新的小时值更新该键的数组中的'hours'值:
foreach ($data as $row => $value){
$query = $db->query('SELECT * FROM t WHERE id=$row');
if ($result){
$value['hours'] = $result['hours'];
}
Run Code Online (Sandbox Code Playgroud)
一切都很好,除了我已经尝试了foreach循环的每个声明组合,但我不断得到错误,这$value['hours']是一个无效的引用.我试过宣布$value[]......但这也行不通.我不需要迭代,$value所以不需要另一个foreach循环.
当然,这比我的大脑感知更容易.
这是整个片段:
foreach($_gspec as $key => $value){
$sql = sprintf('SELECT * FROM List WHERE specialtyID=%s', $key);
$query = $db->query($sql);
if ($query->num_rows() !== 0){
$result = $query->row_array();
$value['hours'] = $result['hours'];
}
}
Run Code Online (Sandbox Code Playgroud)
你要
$data[$row]['hours'] = $result['hours']
$row会被更好地命名为$key(就是这样!)
有些人会建议使用指针,但我发现这种方式对我来说更有意义.