http://bloggdgd.blog28.fc2.com/blog-entry-264.html
http://fushi.x0.com/blog/archives/828
プロパティ「"A"」には$obj->Aでアクセスできますが、プロパティ「0」にはどうやってもアクセスできねーよ、というお話。
まあキャストしてるから(array)と一緒だろ、と言われればそのとおりですが。
実はここからがわりと愉快で深刻な話になります。
																					
																						http://fushi.x0.com/blog/archives/828
<?php
	$arr = array('0'=>'zero', 'A'=>'B');
	$obj = (object)$arr;
	var_dump($obj);
	object(stdClass)#1 (2) {
	  [0]=>
	  string(4) "zero"
	  ["A"]=>
	  string(1) "B"
	}
objectにキャストした結果、"zero"のキーが何故か数値になっています。プロパティ「"A"」には$obj->Aでアクセスできますが、プロパティ「0」にはどうやってもアクセスできねーよ、というお話。
$arrayObject = new ArrayObject($obj, ArrayObject::ARRAY_AS_PROPS); print($arrayObject[0]); // zeroできました。
まあキャストしてるから(array)と一緒だろ、と言われればそのとおりですが。
実はここからがわりと愉快で深刻な話になります。
<?php
	$arr = array('0'=>'zero');
	$obj = (object)$arr; // [0]になる
	$obj->{0} = 'hoge'; // 実際は["0"]に入る
	
	// ArrayObjectは全て"zero"
	$arrayObject = new ArrayObject($obj, ArrayObject::ARRAY_AS_PROPS);
	var_dump($arrayObject[0], $arrayObject['0'], $arrayObject->{0}, $arrayObject->{'0'});
	
	// 配列はどちらも"zero"
	$arr = (array)$iter;
	var_dump($arr[0], $arr['0']);
	
	// stdClassは何故か"hoge"
	$obj = (object)$arr;
	var_dump($obj->{0}, $obj->{'0'});
うむ、意味が分からない。PR
							