เชียงรายโฟกัสดอทคอม สังคมออนไลน์ของคนเชียงราย ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
วันที่ 29 เมษายน 2024, 22:49:45
หน้าแรก ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก



  • ข้อมูลหลักเว็บไซต์
  • เชียงรายวันนี้
  • ท่องเที่ยว-โพสรูป
  • ตลาดซื้อขายสินค้า
  • ธุรกิจบริการ
  • บอร์ดกลุ่มชมรม
  • อัพเดทกระทู้ล่าสุด
  • อื่นๆ

ประกาศ !! กรุณาอ่านเพื่อทำความเข้าใจ : https://forums.chiangraifocus.com/index.php?topic=1025412.0

+  เว็บบอร์ด เชียงรายโฟกัสดอทคอม สังคมออนไลน์ของคนเชียงราย
|-+  ศูนย์กลางข้อมูลเชียงราย
| |-+  คุยเรื่องไอที - เทคโนโลยี (ผู้ดูแล: K€nGja1, chiohoh, nuifish, NOtis)
| | |-+  [มุมโปรแกรมเมอร์] PHP การแทนที่ข้อมูล Array ชุดแรก ด้วยข้อมูล Array ชุดใหม่
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
« หน้าที่แล้ว ต่อไป »
หน้า: [1] พิมพ์
ผู้เขียน [มุมโปรแกรมเมอร์] PHP การแทนที่ข้อมูล Array ชุดแรก ด้วยข้อมูล Array ชุดใหม่  (อ่าน 774 ครั้ง)
{Cyberman}
To Be Developer
มัธยม
**
ออฟไลน์ ออฟไลน์

กระทู้: 504


โปรแกรมเมอร์เชียงราย


« เมื่อ: วันที่ 17 กุมภาพันธ์ 2018, 18:59:38 »



เมื่อเรามีข้อมูล Array อยู่แล้วชุดหนึ่ง
แต่ในการทำงานครั้งต่อไปต้องการนำ Array ชุดใหม่
ใส่เพิ่มเข้าไปจะทำอย่างไร?


ฟังก์ชั่นที่เกี่ยวกับ Array ฟังก์ชั่นแรกที่โผล่ขึ้นในหัวก็คือ array_push();
แต่เดี๋ยวก่อน!! มันเพิ่มเข้าไปจริง แต่มันไม่แทนที่ Array ชุดเดิมที่ key เหมือนกัน
การเพิ่ม Array มิติใหม่เข้าไปอีกชุดหนึ่ง

โค๊ด:
<?php
 $a 
= array('a' => 'hello''b' => 'world');
 
$b = array('a' => 'person''b' => 'thing''c'=>'other''15'=>'x');
  echo 
'<pre>'print_r(array_push($a$b)),'</pre>';
?>

ผลลัพธ์คือ มี Array มิติใหม่โผล่เพิ่มเข้าไป

โค๊ด:
Array
(
    [a] => hello
    [b] => world
    [0] => Array
        (
            [a] => person
            [b] => thing
            [c] => other
            [15] => x
        )
)

แต่ที่ต้องการคือแบบนี้ กรณีที่มีข้อมูลเดิมอยู่แล้ว
ก็แทนที่ด้วยข้อมูลใหม่ไปเลย
เช่น ตำแหน่ง a เดิมทีเป็น hello
เมื่อเรียกใช้ฟังก์ชั่น array_merge();
ก็จะแทนด้วยค่าใหม่คือ person

โค๊ด:
<?php
$a 
= array('a' => 'hello''b' => 'world');
$b = array('a' => 'person''b' => 'thing''c'=>'other''15'=>'x');
print_r(array_merge($a$b));
/*Array
(
    [a] => person
    [b] => thing
    [c] => other
    [0] => x
)*/

สังเกตว่า $b จะมีตำแหน่งที่ 15 มีค่าเป็น x
แต่เมื่อมา merge กันชื่อตำแหน่ง หรือ key ของ Array
จะถูกเปลี่ยนไปอัตโนมัติ ซึ่งยังไม่ใช่ที่ต้องการ

งั้นมาดูอีกหนึ่งฟังก์ชั่นที่ตรงกับที่ต้องการกันว่าจะเป็นเช่นไร
ฟังก์ชั่นที่ว่านี้ก็คือ array_replace(); อ่านจากชื่อก็บอกอยู่แล้วว่า
"แทนที่" ดังนั้นก็ไม่ต้องกังวลว่าชื่อตำแหน่ง key จะหายอีกต่อไป
ดังตัวอย่างด้านล่างนี้



สังเกตว่าข้อมูลที่ได้เมื่อใช้ array_replace() จะคงสภาพ
เหมือน Array ชุดที่ 1 หรือชุดต้นฉบับที่เราต้องการนำไปใช้งาน
จะเปลี่ยนก็แต่ข้อมูลใหม่ที่ต้องการเพิ่มเข้าไปเท่านั้น

ข้อสังเกตอีกอย่างคือ array_merge()
จะทำการรวมข้อมูล Array แบบไม่สนใจ key ที่เป็นแบบตัวเลข
จะนำข้อมูลมารวมกันแล้วสร้าง key ตัวเลขให้ใหม่อัตโนมัติ
แต่ถ้าชื่อ key เป็นตัวอักษร จะมีการแทนที่ให้คล้ายกับ array_replace()


ดังนั้น หากต้องการให้ Array ชุดแรกเป็นต้นฉบับไม่เปลี่ยนแปลงชื่อ key เดิม
แม้จะเป็นตัวเลข (ซึ่งก็รวมถึง Array ชุดใหม่ด้วย) ก็ให้ใช้ array_replace()
เพิ่มข้อมูลเข้าไปนั่นเอง

ที่มา : http://phpcodemania.blogspot.com/2018/02/php-array-replace-associative.html
« แก้ไขครั้งสุดท้าย: วันที่ 28 มีนาคม 2018, 22:50:16 โดย {Cyberman} » IP : บันทึกการเข้า

หน้า: [1] พิมพ์ 
« หน้าที่แล้ว ต่อไป »
กระโดดไป:  


เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

 
เรื่องที่น่าสนใจ
 

ข้อความที่ท่านได้อ่านบนกระดานข่าวแห่งนี้ เกิดขึ้นจากการเขียนโดยสาธารณชน และตีพิมพ์แบบอัตโนมัติ ผู้ดูแลเว็บไซต์แห่งนี้ไม่จำเป็นต้องเห็นด้วย
และไม่รับผิดชอบต่อข้อความใดๆ ผู้อ่านจึงต้องใช้วิจารณญาณในการกลั่นกรองด้วยตัวเอง และถ้าท่านพบเห็นข้อความใดๆ ที่ขัดต่อกฎหมาย และศีลธรรม พาดพิง ละเมิดสิทธิบุคคอื่น ต้องการแจ้งลบ
กรุณาส่งลิงค์มาที่
เพื่อทีมงานจะได้ดำเนินการลบออกให้ทันที..."

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
www.chiangraifocus.com

Valid XHTML 1.0! Valid CSS!