更改YII cactiverecord型号的特定符号';s属性

更改YII cactiverecord型号的特定符号';s属性,yii,cactiverecord,Yii,Cactiverecord,如何更改YII cactiverecord模型属性的特定符号? 不明白为什么它不起作用: echo $model->attr; // aaa $model->attr[1] = 'b'; echo $model->attr; // aaa 使用substr\u replace功能: echo $model->attr; // aaa $model->attr = substr_replace($model->attr, 'b', 1, 1); echo $m

如何更改YII cactiverecord模型属性的特定符号? 不明白为什么它不起作用:

echo $model->attr; // aaa
$model->attr[1] = 'b';
echo $model->attr; // aaa

使用
substr\u replace
功能:

echo $model->attr; // aaa
$model->attr = substr_replace($model->attr, 'b', 1, 1);
echo $model->attr; // aba

您也可以使用这种方法:

$newValue = $model->attr[1] = 'b';
$model->attr = $newValue;
echo $model->attr; // aba

您的示例不起作用,因为实际上
$this->AttributeName
执行
CActiveRecord::getAttribute('AttributeName')
,并且不影响原始值。

回答得好。基本上,所有CActiveRecord属性都存储在一个数组中,并通过magic _get()和_set()函数进行访问。在这种情况下,使用括号访问字符串偏移量将不起作用。