Heim >Backend-Entwicklung >PHP-Tutorial >【关于print_r的一个怪现象】解决方法

【关于print_r的一个怪现象】解决方法

WBOY
WBOYOriginal
2016-06-13 10:12:42871Durchsuche

【关于print_r的一个怪现象】
class ColumnVo extends Vo{
  public $column_id;
  public $column_name = array('label'=>'栏目名称','value'=>'haha');
  .............


}

-------------------------------------------
  if($property=='column_name'){
  print_r($this->$property['value']);
  echo '
';
echo 'Form value is: '.$value.'
';
$this->$property['value'] = $value; 
print_r($this->$property['value']);
echo
';
print_r($this->$property);
}
-----------------输出----------------------
Undefined property: ColumnVoMysql 报错
Form value is: cccccccc
cccccccc
Array ( [label] => 栏目名称 [value] ='haha'> )
-------------------------------------------
第二行输出说明值的却已经赋上去了。 但是打印数组却只打印VO原有的值, [type] => string 这个是VO原来就写死的。

总结:print_r 有点懒加载的味道,我被print_r害惨了。

------解决方案--------------------
语法歧义造成的


你可以改成
$this->{$property}['value']

$this->{$property}['value'] = $value;

……
print_r……

------解决方案--------------------
还是用常规的方法好。不要直接改属性,通过魔术的或者自定义的get,set方法多好。会避免很多问题。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn