配列に変換されてからオブジェクトに変換された値を取得したい。
$input = (object)(array) 123;
var_dump($input);
これは以下を出力します:
object(stdClass)#1 (1) {
[0]=>
int(123)
}
値123を取得するにはどうすればよい$input
ですか?
https://bugs.php.net/bug.php?id=45959
残念ながら、これは既知の問題であり、対処することはできません。
外部ソースからのこのタイプのオブジェクトで立ち往生している場合、最善の策はそれを配列にキャストして値を取得することです。
$input = (object)(array) 123;
$array = (array) $input;
echo $array[0];
このコードを試してください:
<pre><?php
$input = (object)(array) 123;
$reflection = new ReflectionObject($input);
var_dump($reflection->hasProperty('0'));
?></pre>
これにより、値は に表示さvar_dump($input)
れますが、プロパティとは見なされないことがわかります。を要求してもgetProperties()
、何も出力されません。
また.. なぜこの種の嫌悪感が必要だと思うのですか?SO に、誤って定義された問題に対する壊れたソリューションのバグ修正をパッチするように依頼しているようです。