PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Saturday, March 5, 2022

[FIXED] Pushing a sub array into the same array

 March 05, 2022     array-push, arrays, codeigniter, php     No comments   

Issue

I am trying to put content of one array into the same array. Here I have an array $mclass with values such as

Array
(
[0] => stdClass Object
    (
        [room_id] => 1,3,5
        [day] => 1
        [class_teacher] => TEA-2014-2
        [final_exam_date] => 2015-09-21
    )
)

You can see I have room_id index with 1,3,5 value. Now, I want to explode the room_id and get duplicate of same array index data with change of room_id and push into the array. and finally delete the current array index such as [0]. Here I want the final result as.

Array
(
    [0] => stdClass Object
    (
        [room_id] => 1
        [day] => 1
        [class_teacher] => TEA-2014-2
        [final_exam_date] => 2015-09-21
    )
    [1] => stdClass Object
    (
        [room_id] => 3
        [day] => 1
        [class_teacher] => TEA-2014-2
        [final_exam_date] => 2015-09-21
    )
    [2] => stdClass Object
    (
        [room_id] => 5
        [day] => 1
        [class_teacher] => TEA-2014-2
        [final_exam_date] => 2015-09-21
    )
)

Here is my code for the same:

if(count($mclass)>0)
    {
        foreach($mclass as $mclasskey=>$mclass_row)
        {

            /* Room ID Calculation */
            if(isset($mclass[$mclasskey]))
            {
                $temp_room_id = explode(',',$mclass_row->room_id);
            
                if(count($temp_room_id)>1)
                {

                    foreach($temp_room_id as $trkey=>$tr)
                    {
                        if(!in_array($temp_room_id[$trkey], $morning_class_semester))
                        {
                            array_push($morning_class_semester,$temp_room_id[$trkey]);
                        }
                    }

                    if(count($morning_class_semester)>0)
                    {
                        foreach($morning_class_semester as $mcskey=>$mcs)
                        {
                            $index_count = count($new_test);
                            $test[$index_count] = $mclass[$mclasskey];
                            
                            $test[$index_count]->room_id = $morning_class_semester[$mcskey];
                            

                            array_push($new_test,$test[$index_count]);
                        }

                        unset($mclass[$mclasskey]);

                    }

                    
                }
            }

        }
    }

Solution

The code below does what you're looking for using only arrays. So you'll have to change the array access operators to -> since you're accessing an object. I'd do so, but it would break the example, so I'll leave that up to you.

Code Explained: Loop through array selecting each subarray (object in your case), explode on the $item('room_id') ... ($item->room_id in your case) ... and create sub arrays, via loop, from that using the data from the original using each key. Remove the original item (which has the combined room_ids) and combine the placeholder and original array.

<?php
//Establish some data to work with
$array = array(
    array(
    "room_id" => "1,3,5",
    "day" => 1,
    "class_teacher" => "TEA-2014-2",
    "final_exam_date" => "2015-09-21",
));

foreach ($array as $key => $item) {
    $placeholder = array();
    $ids = explode(',',$item['room_id']);
    if (count($ids) > 1) {
        foreach ($ids as $id) {
            $push = array(
                'room_id' => $id,
                'day' => $item['day'],
                'class_teacher' => $item['class_teacher'],
                'final_exam_date' => $item['final_exam_date']
            );
            array_push($placeholder, $push);
        }
        $array = array_merge($array, $placeholder);
        unset($array[$key]);
    }
}

var_dump($array);
?>


Answered By - acupofjose
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing