为什么 $ poll_id param在array_map的回调中是NULL(未定义)?下面的代码有效,但我必须使用特殊的私有 $ id 类成员来克服它......
class Polls_model extends CI_Model
{
private $id;
// ...
public function add_poll_answers($poll_id, $answers)
{
$this->id = $poll_id;
if (count($answers) > 0)
{
$this->db->insert_batch('poll_answers',
array_map(
function ($a)
{
log($poll_id); // NULL, why?
log($this->id); // correct value
return ['name' => $a,'poll_id' => $this->id];
}, $answers));
}
}
}
答案 0 :(得分:4)
变量$ poll_id为null,因为它的作用域是本地的。 你可以使用php闭包:
function ($a) use ($poll_id)
{
log($poll_id); // NULL, why?
log($this->id); // correct value
return ['name' => $a,'poll_id' => $this->id];
}, $answers));