【问题标题】:I am stuck with PHP's array()?我被 PHP 的数组()困住了?
【发布时间】:2009-06-24 19:01:29
【问题描述】:

为什么下面的array() 被传递到一个函数中。我无法理解 array() 函数。 我知道如果 $_POST 没有任何值,它会通过array(),但是array() 中的值是什么?

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

【问题讨论】:

    标签: php arrays function parameters


    【解决方案1】:

    array() 不是一个函数,它是一个language construct to create a new array。如果没有给出参数(请原谅函数术语),则创建一个空数组。 PHP 数组和说... Java 数组的区别在于 PHP 数组会随着新元素的添加而动态调整大小。但是 array() 结构也将参数作为 key=>value-pairs 的逗号分隔列表。

    因此,您可以通过以下方式创建数组:

    $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
    )
    

    【讨论】:

      【解决方案2】:

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

      您可能想要检查:

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

      编辑:

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

      【讨论】:

      • $_POST 应该始终设置,除非您使用的是古老的 PHP,在这种情况下,比假装没有 POST 数据要好得多。
      • 是的,你是对的。没想到。但这意味着这个问题是完全荒谬的,因为一个空的 $_POST 将至少是一个空数组
      • 我想你的意思是:empty($_POST) ?数组():$_POST
      • @Josh:结果是一样的。 $_POST 始终设置,如果它不包含任何变量,它将是一个空数组。所以整个测试是不必要的。
      • @Machine,是的,我刚刚意识到这一点并为此发表了评论。这段代码有些缺陷:-)
      【解决方案3】:

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

      【讨论】:

      • 我的问题是,那个空数组conatian是什么?这是否包含零值..?
      • 空数组不包含任何内容。
      • @Syed,函数 SomeFunction() 需要一个数组,而您提供的代码是(糟糕的)尝试确保将数组传递给 SomeFunction() - $_POST 或空数组
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 2017-09-26
      • 2011-09-21
      • 1970-01-01
      相关资源
      最近更新 更多