为什么在第一个foreach循环后我的变量数据丢失了?

达蒙

我正在使用CodeIgniter在数据库中插入记录。一切工作正常,但我似乎无法理解为什么嵌套数组的值在第一个foreach循环后会丢失其值。

的PHP

// $data is all data (array) passed from controller method.
public function create($data)
{
    $my_data = array(
        'name' => $data['name'],
        ....
    );

    if ($this->db->insert('myTable', $my_data)) {
        $insert_id = $this->db->insert_id();

        // $data['mySecondCheckbox'] has value here

        foreach ($first_data['myFirstCheckbox'] as $cb1) {
            $first_data = array(
                'fk_foo_id' => $insert_id,
                'fk_cb_id' => $cb1
            );

            $this->db->insert('mySecondTable', $first_data);
        }

        // $data['mySecondCheckbox'] has no value here

         foreach ($data['mySecondCheckbox'] as $cb2) {
            $second_data = array(
                'fk_foo_id' => $insert_id,
                'fk_cb_id' => $cb2
            );

            $this->db->insert('myThirdTable', $second_data);
        }

        return $insert_id;
    } else {
        return false;
    }

}

解决方案

谢谢@约翰!睡觉后很明显。当时,我以为$ data特定于每个each范围。

的PHP

// $data is all data (array) passed from controller method.
public function create($data)
{
    $my_data = array(
        'name' => $data['name'],
        ....
    );

    if ($this->db->insert('myTable', $my_data)) {
        $insert_id = $this->db->insert_id();

        // $data['mySecondCheckbox'] has value here

        foreach ($data['myFirstCheckbox'] as $cb1) {
            $first_data = array(
                'fk_foo_id' => $insert_id,
                'fk_cb_id' => $cb1
            );

            $this->db->insert('mySecondTable', $first_data);
        }

        // $data['mySecondCheckbox'] has no value here

         foreach ($second_data['mySecondCheckbox'] as $cb2) {
            $data = array(
                'fk_foo_id' => $insert_id,
                'fk_cb_id' => $cb2
            );

            $this->db->insert('myThirdTable', $second_data);
        }

        return $insert_id;
    } else {
        return false;
    }

}
约翰

foreach循环的第一行是在循环“ $ data”中重置主题。重命名变量,您应该会很好

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的程序在For循环的第一个循环后跳过cin>>?

For循环在第一个循环后丢失变量值

为什么我的 jQuery show() 函数在 php foreach 循环中仅适用于第一个元素

为什么for循环会更改for循环中的列表后跳过第一个元素?

为什么变量只传递jQuery中for循环的第一个值?

为什么第一个是无限循环?

Selenium / Python:为什么在我的for循环迭代中找到第一个元素后,为什么Selenium find_element_不再通过查找元素了?

为什么我的 for 循环只抓取第一个元素?

为什么我的for循环仅在第一个元素上起作用?

为什么我的 Javascript 循环只返回第一个值?

遍历 for 循环:为什么我的第一个 if 语句不运行?

为什么我的 for 循环只打印第一个结果?

为什么我的 for 循环只重复打印第一个 if 语句?

为什么在未应用第一个规则集后我的CSS?

为什么我的简单链表在第一个节点后不起作用?

为什么我只处理第一个变量?

什么是我的堆栈程序的第一个变量?

为什么我的html select不选择数据的第一个值?

jQuery:为什么我只能获得第一个数据属性?

为什么我的 OpenFlow 匹配与第一个数据包不匹配?

为什么我的第一个加载数据axios是返回404 Vue Js?

Python“Hello World”,为什么我的代码没有执行超过我的第一个变量?

为什么高图条形图上的第一个标签丢失了?

为什么这个非常基本的 AspNetCore 程序的输出中丢失了第一个空间

为什么第一个循环总是比第二个循环快?

为什么我不能在Angular ngFor循环中设置第一个单词的样式?

为什么循环浏览元组会给我字符串的第一个字符?

为什么这个程序在我输入第一个单词时结束并且不循环

为什么我无法在选择器视图列表中选择我的第一个数据?