array_merge(array($ string),$ array)或array_merge((array)$ string,(array)$ array)

时间:2014-05-04 08:01:51

标签: php arrays

问题与此处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 );

与初始数组相同。

3 个答案:

答案 0 :(得分:2)

array($foo)(array)$foo之间存在细微差别,但它不会影响输出。

虽然array($foo)将尝试从$foo构建一个数组,显然返回一个数组,(array)$foo会尝试查看$foo,就像它是一个数组一样,因此返回一个数组。如果您的变量是数组的良好候选者,则两者都具有完全相同的结果,但是(array)$foo可能具有更强的语义方面,因为它暴露了您将变量用作数组的意图,而不是从中构建数组

答案 1 :(得分:1)

  1. array_merge只接受数组 的类型参数(自PHP 5.0起)
  2. 转换所有参数使用类型转换,因此
  3. 在变量之前添加(array),它意味着将数据类型转换为数组,例如它不是数组。
  4. 注意:

    如果您可以确保array_merge ARE 数组中使用的所有变量。您可以直接访问它,而不是添加(array)

答案 2 :(得分:0)

是的,这是正确的代码。如果您确定该参数已经是一个数组,则不需要进行类型转换。