根據Zend框架命名約定,私有變量應以_(下劃線)開頭。但是,當將對象轉換爲數組(鑄造)時會導致問題。數組元素鍵以「_」開頭。如何在將對象轉換爲數組時將下劃線刪除?將對象轉換爲數組時刪除_(下劃線)
例如
class Book {
private _name;
private _price;
}
將被轉換爲
array('_name' => 'abc', '_price' => '100')
我想刪除 '_' 在數組元素的鍵。
根據Zend框架命名約定,私有變量應以_(下劃線)開頭。但是,當將對象轉換爲數組(鑄造)時會導致問題。數組元素鍵以「_」開頭。如何在將對象轉換爲數組時將下劃線刪除?將對象轉換爲數組時刪除_(下劃線)
例如
class Book {
private _name;
private _price;
}
將被轉換爲
array('_name' => 'abc', '_price' => '100')
我想刪除 '_' 在數組元素的鍵。
我想也許你想要的東西像這樣:
//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()
。
沒有一個確切的例子有點艱難,但這應該是接近。基本上遍歷,發現有開始元素_,刪除它們,並插入一個下劃線少元素數組
$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
)