PHPLover
PHPLover

Reputation: 12957

How to insert a new key-value pair in an associative array in PHP?

I've an associative array named $classes_data as follows:

Array
(
    [2] => Array
        (
            [class_id] => 2
            [class_name] => II
            [subjects] => Array
                (
                    [0] => 11 Engllish
                )

        )

    [3] => Array
        (
            [class_id] => 3
            [class_name] => III
            [subjects] => Array
                (
                    [0] => Hidi
                    [1] => 11 Maths
                    [2] => 11 Science
                    [3] => 11 Engllish
                )

        )

    [4] => Array
        (
            [class_id] => 4
            [class_name] => IV
            [subjects] => Array
                (
                    [0] => Physics
                )

        )

    [6] => Array
        (
            [class_id] => 6
            [class_name] => VI
            [subjects] => Array
                (
                    [0] => Mathematics
                    [1] => dfadadadsagfasrsarasrarBiology
                )

        )

    [7] => Array
        (
            [class_id] => 7
            [class_name] => VII
            [subjects] => Array
                (
                    [0] => Physics
                    [1] => Chemistry11
                    [2] => 11 Science
                )

        )

    [8] => Array
        (
            [class_id] => 8
            [class_name] => VIII
            [subjects] => Array
                (
                    [0] => Hidi
                    [1] => 11 Engllish
                )

        )

    [9] => Array
        (
            [class_id] => 9
            [class_name] => IX
            [subjects] => Array
                (
                    [0] => Mathematics
                    [1] => Hidi
                    [2] => 11 Science
                )

        )

)

The keys of array (viz. 2,3,4,6,7,8,9) are in this manner instead of 0,1,2,3,4,5,6 because I've used one function to rearrange these keys.

Now what I want to do is insert a new key class_checked and set its initial value as 0 (i.e.class_checked =>"0").

I tried lot of tricks but couldn't get the desired array format. Can any one help me in this to get the desired array? Thanks in advance.

For your information the required array format for array $classes_data will be as follows:

 Array
    (
    [2] => Array
        (
            [class_id] => 2
            [class_name] => II
            [class_checked] => 0
            [subjects] => Array
                (
                    [0] => 11 Engllish
                )

        )

    [3] => Array
        (
            [class_id] => 3
            [class_name] => III
            [class_checked] => 0
            [subjects] => Array
                (
                    [0] => Hidi
                    [1] => 11 Maths
                    [2] => 11 Science
                    [3] => 11 Engllish
                )

        )

    [4] => Array
        (
            [class_id] => 4
            [class_name] => IV
            [class_checked] => 0
            [subjects] => Array
                (
                    [0] => Physics
                )

        )

    [6] => Array
        (
            [class_id] => 6
            [class_name] => VI
            [class_checked] => 0
            [subjects] => Array
                (
                    [0] => Mathematics
                    [1] => dfadadadsagfasrsarasrarBiology
                )

        )

    [7] => Array
        (
            [class_id] => 7
            [class_name] => VII
            [class_checked] => 0
            [subjects] => Array
                (
                    [0] => Physics
                    [1] => Chemistry11
                    [2] => 11 Science
                )

        )

    [8] => Array
        (
            [class_id] => 8
            [class_name] => VIII
            [class_checked] => 0
            [subjects] => Array
                (
                    [0] => Hidi
                    [1] => 11 Engllish
                )

        )

    [9] => Array
        (
            [class_id] => 9
            [class_name] => IX
            [class_checked] => 0
            [subjects] => Array
                (
                    [0] => Mathematics
                    [1] => Hidi
                    [2] => 11 Science
                )

        )

)

Upvotes: 0

Views: 11005

Answers (3)

Dharmesh Patel
Dharmesh Patel

Reputation: 1891

Try:

foreach($classes_data as $key=>$value) {
    $classes_data[$key]['class_checked'] = 0;
}

Upvotes: 4

Matteo Tassinari
Matteo Tassinari

Reputation: 18584

given your initial $classes_data you could do this:

foreach($classes_data as &$class) {
  $class['class_checked'] = 0;
}

now the array should be as you want it to be.

Upvotes: 0

deceze
deceze

Reputation: 522101

$array = array_map(function (array $i) { return $i + array('class_checked' => 0); }, $array);

Or:

foreach ($array as &$i) {
    $i['class_checked'] = 0;
}
unset($i);

Upvotes: 4

Related Questions