2009-06-24 47 views
0

为什么将以下array()传递给一个函数。我无法理解array()功能。 我知道如果$ _POST没有任何值,它会通过array(),但是array()的值是多少?我坚持PHP的数组()?

SomeFunction($_POST ? $_POST : array()); 

回答

3

array()不是一个函数本身,它是一种语言结构。但只需使用array()就会为您创建一个空数组,即零元素。

你可能要检查:

isset($_POST) ? $_POST : array() 

编辑:

正如格雷格指出,$_POST将始终被设置。所以不需要检查它并返回一个空数组。 someFunc($_POST)应该做同样的事情。

+7

$ _ POST应始终设置,除非你是在一个古老的PHP,在这种情况下有更好的事情要做比假装没有发布数据。 – Greg 2009-06-24 19:07:15

+0

是的,你是对的。没有想到这一点。但这意味着这个问题是完全荒谬的,因为一个空的$ _POST将至少是一个空的数组 – knittl 2009-06-24 19:27:24

0

它只是传入一个空数组,如果$ _POST不计算为true
为什么,我不知道...

7

array()是不是一个功能,它是一个language construct to create a new array。如果没有参数(原因是函数术语),则创建一个空数组。 PHP数组之间的区别和说... Java数组是指在添加新元素时动态调整PHP数组的大小。但是array() - 构造也将参数作为逗号分隔的列表key =>值对

所以,你可以通过以下方式创建数组:

$empty = array(); 
$autoIndexed = array (1, 2, 3); 
$associative = array('key1' => 1, 'key2' => 2); 

var_dump($empty, $autoIndexed, $associative); 

// Prints: 
Array() 
Array (
    [0] => 1 
    [1] => 2 
    [2] => 3 
) 
Array (
    [key1] => 1 
    [key2] => 2 
)