【问题标题】:What does the (array) syntax do?(array) 语法有什么作用?
【发布时间】:2016-12-02 04:09:28
【问题描述】:

我目前正在 Laravel 中构建代码,并在我的代码中添加 (array) 部分修复了我在数组中没有传递数据时的 laravel 同步问题。 This is the question 我从 (array) 代码中学习并得到了使用。

我很难在 laravel 或 php 中找到这方面的文档,并且想知道 (array) 代码来自哪种语言/框架以及它究竟是做什么的。如果您可以将我引导至正确的文档页面,我也会很喜欢。

【问题讨论】:

  • 我会假设 Laravel。我从未在我看过的任何 php 代码中看到“(数组)”。
  • Type Juggling 是你要找的。​​span>
  • @ElroyJetson Laravel 没有语法。它不是一种语言。
  • @ElroyJetson 实际上,您可以将类型转换为任何类型。你可以做$x = 1; $y = (object)$x; 并得到一个stdClass 对象。它不是非常有用,但你可以做到。
  • @ElroyJetson 这只是 PHP 成为 weakly typed 的副作用。大多数语言不允许您即时转换类型,但 PHP 为简单起见

标签: php arrays


【解决方案1】:

这只是使用现有变量创建数组的另一种方式

$x = 1; // int
$y = (array)$x; // array[0] => 1
$z = [$x]; // array[0] => 1

我应该注意最后一种方式是首选(直接将其声明为数组),因为它更清楚会发生什么(在转换这样的值时,类型杂耍会产生意想不到的结果)。

http://php.net/manual/en/language.types.array.php#language.types.array.casting

【讨论】:

    【解决方案2】:

    我认为您正在为 php 中的 类型转换 过程苦苦挣扎,例如:

    PHP 类型转换为数组

    我们可以使用 (array) 关键字转换数组中的任何数据类型变量。任何标量数据类型转换为数组都将创建数组并在第 0 个索引处添加元素。

    例如:

    <?php
    var_dump((array) , 5);// value 5 in the array with 0th index
    var_dump((array) NULL);// Will be empty array
    ?>
    

    Explanation with example

    【讨论】:

    • var_dump((array) , 5);// 第 0 个索引的数组中的值 5 是什么意思,应该没有 ','
    【解决方案3】:

    根据php手册,这只是一个数组转换

    Converting to array

    对于任何整数、浮点数、字符串、布尔值和资源类型, 将值转换为数组会生成一个包含单个 索引为零的元素和标量的值 转换。换句话说, (array)$scalarValue 与 数组($scalarValue)。

    如果将对象转换为数组,则结果是一个数组,其 元素是对象的属性。键是成员变量 名称,除了一些值得注意的例外:整数属性是 无法访问;私有变量的类名附加到 变量的名称;受保护的变量前面有一个“*” 变量的名称。这些前置值在两边都有空字节。 这可能会导致一些意外行为:

    <?php
    > 
    > class A {
    >     private $A; // This will become '\0A\0A' }
    > 
    > class B extends A {
    >     private $A; // This will become '\0B\0A'
    >     public $AA; // This will become 'AA' }
    > 
    > var_dump((array) new B()); ?>
    

    上面似乎有两个名为“AA”的键,尽管其中一个 它们实际上被命名为 '\0A\0A'。

    将 NULL 转换为数组会产生一个空数组。

    【讨论】:

      猜你喜欢
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多