开发者

Items in Arrays, are they references?

开发者 https://www.devze.com 2023-02-19 00:33 出处:网络
look at the code below: $inde开发者_StackOverflowx = GetIndexForId($itemid); $item = null; if( $index == -1 )

look at the code below:

$inde开发者_StackOverflowx = GetIndexForId($itemid);

$item = null;

if( $index == -1 )
{
    $item = array();
    $this->items[] = $item;
    $index = count($this->items)-1;
}
else
    $item = $this->items[$index];

$item['id'] = $itemid;
$item['qty'] = $qty;
$item['options'] = $options;

$this->items[$index] = $item; // This line is my question

The last line, is it necessary? I really dont know how php handles array assignment.

P.S. GetIndexForId just searches for if the current ID already exists in the array, and the other "undeclared" variables are parameters.


From the documentation:

Array assignment always involves value copying. Use the reference operator to copy an array by reference.

So yes, given your code, the last line is necessary, but $this->items[] = $item; is superfluous.


If you want to update your Object, yes you need this last line


Any value type like boolean, int... will not be passed by reference. But if your array is filled with objects, it WILL be passed by reference. In your exemple, you need the last line. But as I said, if $item were an object you wouldn't need the last line. It is possible to pass a value type by reference with the reference operator.

Learn how to use the reference operator HERE

0

精彩评论

暂无评论...
验证码 换一张
取 消