2012-06-07 59 views
2

根據Zend框架命名約定,私有變量應以_(下劃線)開頭。但是,當將對象轉換爲數組(鑄造)時會導致問題。數組元素鍵以「_」開頭。如何在將對象轉換爲數組時將下劃線刪除?將對象轉換爲數組時刪除_(下劃線)

例如

class Book { 
    private _name; 
    private _price; 
} 

將被轉換爲

array('_name' => 'abc', '_price' => '100') 

我想刪除 '_' 在數組元素的鍵。

回答

2

我想也許你想要的東西像這樣:

//because of variable scope this method must be in the class where the private propeties are. 
public function toArray() { 
     $vars = get_object_vars($this); 
     $array = array(); 
     foreach ($vars as $key => $value) { 
      $array[ltrim($key, '_')] = $value; 
     } 
     return $array; 
    } 

這將允許你在你的模型,視圖或控制器中調用->toArray()

3

沒有一個確切的例子有點艱難,但這應該是接近。基本上遍歷,發現有開始元素_,刪除它們,並插入一個下劃線少元素數組

$arr = array(
    'foo1' => 'bar1', 
    '_foo2' => 'bar2', 
    '_foo3' => 'bar3' 
); 

foreach ($arr as $key => $val) { 
    if (substr($key,0,1) == '_') { 
     unset($arr[$key]); 
     $arr[substr($key,1)] = $val; 
    } 
} 

在此之後,$arr會像

Array 
(
    [foo1] => bar1 
    [foo2] => bar2 
    [foo3] => bar3 
)