根据 Zend 框架命名约定,私有变量应该以 _(下划线)开头。但是在将对象转换为数组(强制转换)时会导致问题。数组元素键以“_”开头。如何在将对象转换为数组时删除下划线?
例如
class Book {
private _name;
private _price;
}
将转换为
array('_name' => 'abc', '_price' => '100')
我想删除数组元素键中的“_”。
根据 Zend 框架命名约定,私有变量应该以 _(下划线)开头。但是在将对象转换为数组(强制转换)时会导致问题。数组元素键以“_”开头。如何在将对象转换为数组时删除下划线?
例如
class Book {
private _name;
private _price;
}
将转换为
array('_name' => 'abc', '_price' => '100')
我想删除数组元素键中的“_”。
没有一个确切的例子有点困难,但这应该很接近。基本上循环,找到以_开头的元素,删除它们并在数组中插入一个无下划线的元素
$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
)
我想也许你想要这样的东西:
//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()
模型、视图或控制器。