ความแตกต่างระหว่างsetData()และaddData()คืออะไร มีการเชื่อมต่อหรือไม่หากฉันอัพเดตผลิตภัณฑ์หรือตั้งค่าใหม่
ความแตกต่างระหว่างsetData()และaddData()คืออะไร มีการเชื่อมต่อหรือไม่หากฉันอัพเดตผลิตภัณฑ์หรือตั้งค่าใหม่
คำตอบ:
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ฟังก์ชันไลบรารีสอง ฟังก์ชัน
addData () ใช้ setData () ที่ไฟล์ lib สำหรับตั้งค่าฟิลด์โดยใช้การวนซ้ำ
public function addData(array $arr)
{
foreach($arr as $index=>$value) {
$this->setData($index, $value);
}
return $this;
}
setDataเพื่อตั้งค่ามากกว่าหนึ่งช่องด้วยการโทรเพียงครั้งเดียว
$obj->setData('k2'=>'v2399393')นั้น? :-) (ดีถ้าคุณเพิ่มจุดนี้โดยเฉพาะในคำตอบของคุณ)