Answers:
setData
覆盖现有数据,并且可以将一对键值或数组作为参数接收。
如果您将一对键值设置为参数,则$_data[key]
变为value
。如果将参数设置为数组,$_data
则该数组将覆盖先前包含的内容。
例:
$_data = array('k1' => 'v1' , 'k2' => 'v2');
调用$obj->setData('k3','v3')
结果
$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');
调用$obj->setData(array('k3'=>'v3'))
结果
$_data = array('k3'=>'v3');
调用$obj->setData('k2','v2000')
结果
$_data = array('k1' => 'v1' , 'k2' => 'v2000')
调用$obj->setData(array('k2'=>'v2000'))
结果
$_data = array('k2'=>'v2000');
addData
仅接收一个数组作为参数,并将该数组与现有数据合并。
例:
$_data = array('k1' => 'v1' , 'k2' => 'v2');
调用$obj->addData(array('k3'=>'v3'))
结果
$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');
但调用$obj->addData(array('k2'=>'v2000'))
结果
$_data = array('k1' => 'v1' , 'k2' => 'v2000');
$obj->setData('k2'=>'v2399393')
没有问过$obj->setData(array('k2'=>'v2000'))
setData()
功能是only set one field value on one call
。它可以set multiple field value using multiple call of setData function
。
addData()函数是set multiple field values using array with array key as field index.
只是示例:
您要在对象上设置两个字段。
如果我使用的setData()
话,那么你需要做这种类型的工作。需要两个字段,您需要明智地调用setData函数。
$ObVarien->setData('fieldA',$X);
$ObVarien->setData('fieldB',$Y);
但是,如果我使用,addData()
那么你可以做到这一点array key as field name
$Data=array('fieldA'=>$X,'fieldb'=>$Y)
$ObVarien->addData($Data)
addData()和setData()是两个库 Varien_Object
类函数。
在lib文件中使用setData()的addData()可以使用循环来设置字段值。
public function addData(array $arr)
{
foreach($arr as $index=>$value) {
$this->setData($index, $value);
}
return $this;
}
setData
一次呼叫设置多个字段。
$obj->setData('k2'=>'v2399393')
?:-)(如果您在回答中添加此特定点,那就太好了)