The difference has nothing to do with loops or links, but with what exactly means =
in each case.
The first version can be simplified:
$value = $xml->Data->Value;
$value = 1;
, , . , $xml
.
:
$data = $xml->Data;
$data->Value = 1;
, , , - . SimpleXML libxml
XML . , $data->setValueOfChild('Value', 1);
.
, :
$value =& $xml->Data->Value;
$value = 1;
$value
, 1
. , , SimpleXML.
, : , SimpleXMLElement
, $foo->NameThatOccursMoreThanOnce[3]
$some_element['Attribute']
. , :
$value = $xml->Data->Value;
$value[0] = 1;
$value
- SimpleXMLElement
, $value[0] = 1
- $value->setValueOfItem(0, 1)
.
, <Value>
<Data>
; , , [0]
, :
$value = $xml->Data->Value[0];
$value[0] = 1;
, , ! __get
, __set
__unset
, ArrayAccess.