以这种方式创建PHP变量是否可以?

时间:2015-04-15 15:27:23

标签: php

考虑:

 $snode->field_length = array();
 $snode->field_length['und'] = array();
 $snode->field_length['und'][0] = array();
 $snode->field_length['und'][0]['value'] = 5;

只是写作:

 $snode->field_length['und'][0]['value'] = 5;

在第二种情况下,您将分配不存在的字段。但是,PHP并没有抱怨。这是否意味着可以像这样编码?

2 个答案:

答案 0 :(得分:4)

是的,没关系,但也许不是最清晰的写作方式。

PHP具有动态类型,因此在使用之前不必指定变量的类型,因为解释器负责推断您在运行时尝试分配的类型。

我会考虑使用数组初始化器:

$snode->field_length = array(
    'und' => array(
        array(
            'value' => 5
        )
    )
);

或者,甚至更好,在PHP> = 5.4:

$snode->field_length = [
    'und' => [
        [
            'value' => 5
        ]
    ]
];

答案 1 :(得分:1)

是的,您可以按照@mchurichi的回答说,但如果是这种情况,当您不知道之前的值时,请使用array_mergearray_merge_recursive

if(!is_array($snode->field_length)){
    $snode->field_length = array();
}

$snode->field_length = array_merge_recursive($snode->field_length, array(
    'und' => array(
        array(
            'value' => 5
        )
    )
));