问题与此处http://lv1.php.net/array_merge
的示例相关 $beginning = 'foo';
$end = array(1 => 'bar');
$result = array_merge((array)$beginning, (array)$end);
通常我会使用此类代码$result2 = array_merge( array($beginning), $end );
$end
已经是一个数组。为什么需要(array)$end
....
经过测试并看到相同的结果。
那么问题。 array_merge( array($beginning), $end )
代码是否正确?
现在似乎理解为什么使用(array)
例如$var2 = array('test2');
print_r( array($var2) );
将是多维数组
但是
print_r( (array)$var2 );
与初始数组相同。
答案 0 :(得分:2)
array($foo)
和(array)$foo
之间存在细微差别,但它不会影响输出。
虽然array($foo)
将尝试从$foo
构建一个数组,显然返回一个数组,(array)$foo
会尝试查看$foo
,就像它是一个数组一样,因此返回一个数组。如果您的变量是数组的良好候选者,则两者都具有完全相同的结果,但是(array)$foo
可能具有更强的语义方面,因为它暴露了您将变量用作数组的意图,而不是从中构建数组
答案 1 :(得分:1)
array_merge
只接受数组 的类型参数(自PHP 5.0起) (array)
,它意味着将数据类型转换为数组,例如它不是数组。注意:
如果您可以确保array_merge
ARE 数组中使用的所有变量。您可以直接访问它,而不是添加(array)
。
答案 2 :(得分:0)
是的,这是正确的代码。如果您确定该参数已经是一个数组,则不需要进行类型转换。