对于一个新数组,我这样做:
$aVal = array();
$aVal[key1][var1] = "something";
$aVal[key1][var2] = "something else";
对象是否有类似的语法
(object)$oVal = "";
$oVal->key1->var1 = "something";
$oVal->key1->var2 = "something else";
对于一个新数组,我这样做:
$aVal = array();
$aVal[key1][var1] = "something";
$aVal[key1][var2] = "something else";
对象是否有类似的语法
(object)$oVal = "";
$oVal->key1->var1 = "something";
$oVal->key1->var2 = "something else";
当前回答
如果你不想这样做:
$myObj = new stdClass();
$myObj->key_1 = 'Hello';
$myObj->key_2 = 'Dolly';
您可以使用以下其中之一:
PHP > = 5.4
$myObj = (object) [
'key_1' => 'Hello',
'key_3' => 'Dolly',
];
PHP < 5.4
$myObj = (object) array(
'key_1' => 'Hello',
'key_3' => 'Dolly',
);
其他回答
你可以使用new stdClass()(这是推荐的):
$obj_a = new stdClass();
$obj_a->name = "John";
print_r($obj_a);
// outputs:
// stdClass Object ( [name] => John )
或者你可以将一个空数组转换为一个对象,该对象会生成stdClass内置类的一个新的空实例:
$obj_b = (object) [];
$obj_b->name = "John";
print_r($obj_b);
// outputs:
// stdClass Object ( [name] => John )
或者你可以将空值转换为一个对象,该对象会生成stdClass内置类的一个新的空实例:
$obj_c = (object) null;
$obj_c->name = "John";
print($obj_c);
// outputs:
// stdClass Object ( [name] => John )
Php.net说它是最好的:
$new_empty_object = new stdClass();
这里有一个迭代的例子:
<?php
$colors = (object)[];
$colors->red = "#F00";
$colors->slateblue = "#6A5ACD";
$colors->orange = "#FFA500";
foreach ($colors as $key => $value) : ?>
<p style="background-color:<?= $value ?>">
<?= $key ?> -> <?= $value ?>
</p>
<?php endforeach; ?>
除了僵尸的答案,如果你一直忘记stdClass
function object(){
return new stdClass();
}
现在你可以做:
$str='';
$array=array();
$object=object();
我想指出的是,在PHP中,没有像空对象这样的东西:
$obj = new stdClass();
var_dump(empty($obj)); // bool(false)
当然$obj是空的。
另一方面,空数组在两种情况下都是空的
$arr = array();
var_dump(empty($arr));
引用changelog函数为空
没有属性的对象不再被认为是空的。