在foreach循环ci中创建一个数组索引

时间:2017-05-17 12:47:05

标签: php

我有一个id的数组,通过它我必须从两个表中获取数据,现在让我们一步一步地解决我的问题

第一步,我必须得到我想要数据的id,这是返回id的数据的模型

function child_get($id){
        $this->db->select("id");
        $this->db->from('generic_table');
        $this->db->where("parent",$id);
        $query = $this->db->get();
        return $query->result_array();
    }

以下列格式返回一组id

Array ( [0] => Array ( [id] => 13 ) [1] => Array ( [id] => 14 ) )

到目前为止我没有问题现在我必须遍历这个数组并动态地将数据添加到数组中,具体取决于id我使用了foreach循环

$arrOfIds = $data['child1'];
          foreach($arrOfIds as $row) {
             $data['child3']=array
            (
                "id" => $row["id"],
                "path" => $this->Menu->test_maindata($row["id"])
            );
          }

foreach内部使用的模型

 public function test_maindata($id)
    {
        $this->db->select("path");
        $this->db->from('main_data');
        $this->db->where("f_key",$id);
        $query = $this->db->get();
        return $query->result_array();
    }

现在是第一个问题,它覆盖了迭代的每个值,只返回最后一个值,见下面的

Array ( [id] => 14 [path] => Array ( [0] => Array ( [path] => almond.jpg ) ) ) 

你可以看到它跳过id 13的迭代

其次我可以用以下模式制作这个数组

Array( [0] => Array( id=> 13, path=>bluebery.jpg) [1]=> Array( id=> 14, path=>almond.jpg));

1 个答案:

答案 0 :(得分:1)

just use this single query and let me know what is output this is giving

    $this->db->select("generic_table.name,main_data.path");
$this->db->from('generic_table');
$this->db->where("generic_table.id",$id);
$this->db->join("main_data","main_data.f_key = generic_table.id");
$query = $this->db->get();
return $query->result_array();

和循环迭代

$arrOfIds = $data['child1'];
          foreach($arrOfIds as $row) {
             $data['child3'][]=array
            (
                "id" => $row["id"],
                "path" => $this->Menu->test_maindata($row["id"])
            );
          }