【问题标题】:What does (array) $variable mean in php(array) $variable 在 php 中是什么意思
【发布时间】:2013-07-25 06:03:49
【问题描述】:

我最近遇到了一些代码的问题,如下所示:

    $key = "upload_8_fid_aids.tmp";
    public function to_key($key) {

        $s = $this->table;//$s = kv
        foreach((array)$key as $k=>$v) {
            $s .= '-'.$this->primarykey[$k].'-'.$v;
        }
        return $s;
    }

在 foreach 循环中有一个 (array)$key 签名,我坚持的第一件事是以变量 $k 为前缀的“数组”,这是什么意思?第一个想法在我看来,它将$k转换为数组,但是,变量$k是一个字符串,在php中将字符串转换为数组是否合理?我认为这是不合理的。那么这个数组是什么意思?

提前致谢!

【问题讨论】:

  • 我认为 $key 是一个对象,他们正在将其转换为数组!!
  • @TomPHP $k 是一个字符串

标签: php casting


【解决方案1】:

当您在 PHP 中将字符串转换为数组时,它会变成一个数组,并将字符串推送给它。

Example:

$test = "This is a string!";
print_r((array) $test);

输出:

Array
(
    [0] => This is a string!
)

也就是说我觉得代码很奇怪,我看不出循环的必要性,它可能只是:

$key = "upload_8_fid_aids.tmp";

public function to_key($key) {
    $s = $this->table; //$s = kv
    $s .= '-' . $this->primarykey[0] . '-' . $key;
    return $s;
}

【讨论】:

    【解决方案2】:

    括号中的任何类型都在告诉 PHP 将以下内容转换为该类型。

    在这种情况下,这是一种避免检查if( is_array($key)) 的廉价方法,只需将其强制为一个即可。

    【讨论】:

      【解决方案3】:

      将对象转换为数组:

       <?php
              /*** create an object ***/
              $obj = new stdClass;
              $obj->foo = 'foo';
              $obj->bar = 'bar';
              $obj->baz = 'baz';
      
              /*** cast the object ***/
              $array = (array) $obj;
      
              /*** show the results ***/
              print_r( $array );
          ?>
      

      结果:

      Array
      (
          [foo] => foo
          [bar] => bar
          [baz] => baz
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-11
        • 2012-05-04
        • 2015-06-25
        • 2011-08-18
        • 1970-01-01
        • 1970-01-01
        • 2014-04-21
        • 1970-01-01
        相关资源
        最近更新 更多