如何通过foreach循环提取此数组

时间:2016-09-20 05:47:07

标签: php codeigniter loops foreach

我有一个多维数组。我想通过foreach循环提取这个数组,并希望显示在无序列表中。怎么解决这个问题。请帮我。我正在尝试2天,但无法得到任何解决方案。我觉得我的循环很弱。

Array
(
[id] => 1
[name] => Funny
[category_details] => Array
    (
        [get_everything] => Array
            (
                [0] => Array
                    (
                        [ci_cat_id] => 1
                        [img_name] => fapore kapor nosto
                    )

            )
    )

)

Array
(
[id] => 4
[name] => Events
[category_details] => Array
    (
        [get_everything] => Array
            (
                [0] => Array
                    (
                        [ci_cat_id] => 4
                        [img_name] => elo khushir eid
                    )

                [1] => Array
                    (
                        [ci_cat_id] => 4
                        [img_name] => Eid e bari jacchi
                    )

            )

    )

) 

我想要像这样的输出

category name1:
    1. test1
    2. test2
    3. test3
category name2:
    1. test4
    2. test5
    3. test6

4 个答案:

答案 0 :(得分:1)

您需要使用array_column()。首先,您需要循环数组并获取类别名称,并且还需要获取img_name,为此您必须使用array_column并且该函数为您提供img_name的数组,现在再次循环这个新数组并打印img_name。

你的阵列:

$arr = array(
    array(
        "id" => 1,
        "name" => "Funny",
        "category_details" => array(
            "get_everything" => array(
                array(
                    "ci_cat_id" => 1,
                    "img_name" => "fapore kapor nosto"
                )
            )
        )
    ),  
    array(
        "id" => 4,
        "name" => "Events",
        "category_details" => array(
            "get_everything" => array(
                array(
                    "ci_cat_id" => 4,
                    "img_name" => "elo khushir eid"
                ),
                array(
                    "ci_cat_id" => 4,
                    "img_name" => "Eid e bari jacchi"
                )
            )
        )
    )
);

<强>过程:

foreach($arr as $val){
    echo $val['name']."<br/>";
    $i = 1;
    $img_name = array_column($val['category_details']['get_everything'], 'img_name');
    foreach($img_name as $v){
        echo $i++.' - '.$v."<br/>";;
    }
}

输出

Funny
1 - fapore kapor nosto
Events
1 - elo khushir eid
2 - Eid e bari jacchi

答案 1 :(得分:0)

试试这可能会对你有帮助,

1)如果你想要数组:

foreach ($array as $k=>$v){
   foreach ($v['category_details']['get_everything'] as $key => $val){
      $finalArray[$v['name']][] = $val['img_name'];
   }
}

输出将如下所示,

Array
(
[Funny] => Array
    (
        [0] => fapore kapor nosto
    )

[Events] => Array
    (
        [0] => elo khushir eid
        [1] => Eid e bari jacchi
    )

)

2)如果你想要字符串:

foreach ($array as $k=>$v){
   echo $v['name'].'<br/>';
   $i=1;
   foreach ($v['category_details']['get_everything'] as $key => $val){
       echo $i.'. '.$val['img_name'].'<br/>';
        $i++;
   }
}

输出将是,

Funny
   1. fapore kapor nosto
Events
   1. elo khushir eid
   2. Eid e bari jacchi

答案 2 :(得分:0)

尝试这个

foreach($array as $value) {
    echo $value['name'];
    foreach($value['category_details'] as $val) {
        $i=1;
        foreach($val as $v) {    
            echo $i++ . '. ' . $v['img_name'];
        }
    }
}
希望这有帮助..

答案 3 :(得分:0)

我的控制器

function indexx() {
    $emp['get_all_img'] = $this->model_bundle->get_all_img();

    $t = $this->model_bundle->get_category();

    $i = 1;
    foreach ($t as $key => $data) {
        //$emp['get_everything'][$key]['id'] = $data['id'];
        $emp['get_everything'][$key]['name'] = $data['name'];
        $emp['get_everything'][$key]['category_details'] =  $this->get_category_wise_image($data['id']);
        $i++;
    }

    $this->layout->view('bundle/add_bundle', $emp);
}

function get_category_wise_image($cat_id) { 
    $data = $this->model_bundle->get_category_wise_image($cat_id);
    $i = 1;
    foreach ($data as $key => $data) {
        $emp['get_everything'][$key]['ci_cat_id'] = $data['ci_cat_id'];
        $emp['get_everything'][$key]['bangla_caption'] = $data['bangla_caption'];
        $emp['get_everything'][$key]['images_id'] = $data['images_id'];
        $emp['get_everything'][$key]['thumnail'] = $data['thumnail'];
        $i++; 
    }
    //echo "<pre>";  
    //print_r($emp);  
    return $emp;
}

我的模特

function get_all_img()
{
    $this->db->select('id, bangla_caption, thumnail');
    $query = $this->db->get('images');
    return $query->result();
}

function get_category(){
    $this->db->select('id, name');
    $this->db->from('category');
    $this->db->order_by('id');
    $result = $this->db->get(); 
    return $result->result_array(); 
}

 function get_category_wise_image($id){
    $this->db->select('category_images.id as id, img_id, category_images.cat_id as ci_cat_id, images.cat_id as im_cat_id, bangla_caption, name, thumnail, images.id as images_id');
    $this->db->from('category_images');
    $this->db->join('category','category.id = category_images.cat_id','left');
    $this->db->join('images','images.id = category_images.img_id','left');
    $this->db->where('category_images.cat_id',$id);
    $result = $this->db->get(); 
    return $result->result_array(); 
}

查看(add_bundle.php)

foreach($get_everything as $tasks){
    //echo "<pre>";
    //print_r($tasks);
echo '<div class="cat_name">'. $tasks['name'].'</div>';
echo "<ul>";
    foreach($tasks as $task){
                foreach($task as $p){ 
                    foreach($p as $pr){ 
                        echo '<div height="50px">
                        <label><input type="checkbox" name="img_id[]" class="second" value="'.$pr['images_id'].'">';
                        echo '<img src="'.base_url()."uploads/".$pr['thumnail'].'" width="60px">"'.$pr['bangla_caption'].'"</label></div>';              
                    }                        
                }  
        }echo "</ul>";
}