0

I have a result from a SQL query stored inside $assignmentsViewList:

Array
(

    [0] => Array
    (
        [assign_id] => 302
        [ClassCount] => 25
    )

    [1] => Array
    (
        [assign_id] => 303
        [ClassCount] => 25
    )

    [2] => Array
    (
        [assign_id] => 325
        [ClassCount] => 25
    )

)

When I use it inside a foreach to change the value of ClassCount:

foreach ($assignmentsViewList as $task) {
    $task['ClassCount'] = 2;
}

It doesn't work. But if I try this:

$assignmentsViewList[0]['ClassCount']=2;

The code works well. But I need it to work inside the foreach loop.

3
  • What exactly are you trying to achieve here? Do you want to update all the ClassCount values? Or just one? Commented Oct 5, 2016 at 5:23
  • I am changing all the ClassCount values. Commented Oct 5, 2016 at 5:24
  • Please take a look at my answer. It should solve your purpose. Commented Oct 5, 2016 at 5:25

2 Answers 2

2

In order to be able to directly modify array elements within the loop precede $task with &. In that case the value will be assigned by reference.

Reference: PHP foreach()

Try this:

foreach ($assignmentsViewList as &$task) {
    $task['ClassCount'] = 2;   /* It will overwrite all 'ClassCount' values to 2 */
}
Sign up to request clarification or add additional context in comments.

1 Comment

I have seen this '&' before, but I didn't know that this is needed when modifying. Thank you.
1

use & .

Its means iterated over references to actual values of array &$task

 foreach ($assignmentsViewList as &$task)
{
  $task['ClassCount'] = 2;  values of array
}

without & means its iterated over copy of array value.so its not overwrite your array.

take a look in documentation

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.