2013-07-25 26 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 
)