如何访问已转换为对象的数组的属性/值?例如,我想访问索引0中的值
$obj = (object) array('qualitypoint', 'technologies', 'India');
var_dump($obj->0);
误差,
解析错误:语法错误,意外T_LNUMBER,期待T_STRING或 T_VARIABLE或C中的'{'或'$':...第11行的conversion_to_object.php
答案 0 :(得分:4)
试试这个:
$obj = (object) array('test' => 'qualitypoint', 'technologies', 'India');
var_dump($obj->test);
结果是:
string(12) "qualitypoint"
但是尝试访问$obj->0
时,会出现同样的错误:Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$'
如果你遍历对象,那么你可以正常访问这些属性:
foreach($obj as $x) {
var_dump($x);
}
显然,属性命名规则与basic variable naming rules相同。
如果将其转换为ArrayObject,则可以正常访问索引:
$obj = new ArrayObject(array('qualitypoint', 'technologies', 'India'));
倾销它:
var_dump($obj[0]);
你会得到:
string(12) "qualitypoint"
答案 1 :(得分:2)
您无法通过$obj->0
访问值的原因,因为它针对PHP变量命名,请参阅http://php.net/manual/en/language.variables.basics.php以获取更多信息。即使您使用ArrayObject
,您仍会遇到相同的问题
但是有一个补丁...你可以将所有整数键转换为字符串或编写自己的转换函数
示例
$array = array('qualitypoint', 'technologies', 'India' , array("hello","world"));
$obj = (object) $array;
$obj2 = arrayObject($array);
function arrayObject($array)
{
$object = new stdClass();
foreach($array as $key => $value)
{
$key = (string) $key ;
$object->$key = is_array($value) ? arrayObject($value) : $value ;
}
return $object ;
}
var_dump($obj2->{0}); // Sample Output
var_dump($obj,$obj2); // Full Output to see the difference
$sumObject = $obj2->{3} ; /// Get Sub Object
var_dump($sumObject->{1}); // Output world
输出
string 'qualitypoint' (length=12)
完整输出
object(stdClass)[1]
string 'qualitypoint' (length=12)
string 'technologies' (length=12)
string 'India' (length=5)
array
0 => string 'hello' (length=5)
1 => string 'world' (length=5)
object(stdClass)[2]
public '0' => string 'qualitypoint' (length=12)
public '1' => string 'technologies' (length=12)
public '2' => string 'India' (length=5)
public '3' =>
object(stdClass)[3]
public '0' => string 'hello' (length=5)
public '1' => string 'world' (length=5)
Multi Array Outpur
由于
:)