use*_*218 8 javascript php arrays syntax object
我开始放弃在PHP中使用数组,因为对象非常简洁,在PHP 5中使用对象时没有性能命中.
目前我的方式是:
$object = (object) array('this' => 'that', 'foo' => (object) array('bar' => 123));
但是,我发现每次因为类型转换不是递归而必须进行类型转换是如此繁琐...
有没有办法在PHP(或将有)像这样或类似的东西这样做:
$object = {
'this' => 'that',
'foo' => {
'bar' => 123
}
};
Run Code Online (Sandbox Code Playgroud)
Iva*_*ych 24
从PHP 5.4开始,短阵列语法已经可用.这允许您像这样初始化数组:
$myArray = ["propertyA" => 1, "propertyB" => 2];
Run Code Online (Sandbox Code Playgroud)
从PHP7开始,PHP中没有当前的短对象语法.但是您可以使用短数组语法来创建这样的对象:
$myObject = (object) ["propertyA" => 1, "propertyB" => 2];
Run Code Online (Sandbox Code Playgroud)
看起来比使用以下构造更好更短:
$myObject = new \StdClass();
$myObject->propertyA = 1;
$myObject->propertyB = 2;
Run Code Online (Sandbox Code Playgroud)
小智 5
我建议您构建一个函数宽度StdClass。
function arrayToObject($array) {
if(!is_array($array)) {
return $array;
}
$object = new stdClass();
if (is_array($array) && count($array) > 0) {
foreach ($array as $name=>$value) {
$name = strtolower(trim($name));
if (!empty($name)) {
$object->$name = arrayToObject($value);
}
}
return $object;
}
else {
return FALSE;
}
}
Run Code Online (Sandbox Code Playgroud)