2013-07-25 24 views
0

心中已经近期又翻过了一些代码有问题,如下图所示:

$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循环在那里$关键签名,第一件事情就是以变量$ k为前缀的“数组”,这意味着什么呢?第一个想到的是它将$ k转换为一个数组,但是变量$ k是一个字符串,在PHP中将字符串转换为数组是否合理?我认为这是不合理的。那么这个数组是什么意思?

在此先感谢!

+0

我觉得$关键是一个对象,他们将其转换为一个数组! – TomPHP

+2

@TomPHP $ k是一个字符串 – user2556058

回答

2

当您使用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))的便宜方法,只需将其强制为一个即可。

0

转换的对象数组:

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