ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: catz001 ที่ 21 กันยายน 2007, 04:42:21



หัวข้อ: ผมจะลบค่าบางค่าในตัวแปร array ต้องใช้คำสั่งอะไรหรอครับ
เริ่มหัวข้อโดย: catz001 ที่ 21 กันยายน 2007, 04:42:21
 ???
สมมุตินะครับ ผมมีตัวแปร $color=array("green","red","orange")
แล้วผมต้องการลบ ค่า red ออกจาก $color ผมจะต้องใช้คำสั่งอะไรหรือครับ(php)


หัวข้อ: Re: ผมจะลบค่าบางค่าในตัวแปร array ต้องใช้คำสั่งอะไรหรอครับ
เริ่มหัวข้อโดย: ball6847 ที่ 21 กันยายน 2007, 10:16:45
เอามาจาก  คู่มือ php.net คับ

อันนี้อันที่คู่มือเค้าสอน ใช้คล้ายๆ substr() แต่ผมไม่แน่ใจนะว่ามีฟังก์ชั่นสำหรับ ลบ value
ออกจาก array โดยตรงรึปล่าว
โค๊ด:

<?php
$input 
= array("red""green""blue""yellow");
array_splice($input2);
// $input is now array("red", "green")

$input = array("red""green""blue""yellow");
array_splice($input1, -1);
// $input is now array("red", "yellow")

$input = array("red""green""blue""yellow");
array_splice($input1count($input), "orange");
// $input is now array("red", "orange")

$input = array("red""green""blue""yellow");
array_splice($input, -11, array("black""maroon"));
// $input is now array("red", "green",
//          "blue", "black", "maroon")

$input = array("red""green""blue""yellow");
array_splice($input30"purple");
// $input is now array("red", "green",
//          "blue", "purple", "yellow");
?>



อันนี้ฟังก์ชั่นจาก user comment เห็นว่าน่าจะง่ายขั้น

โค๊ด:

function my_array_unset($array,$index) {
 // unset $array[$index], shifting others values
 $res=array();
 $i=0;
 foreach ($array as $item) {
   if ($i!=$index)
     $res[]=$item;
   $i++;
 }
 return $res;
}


แต่ถ้าให้ง่ายๆ นะคับ

โค๊ด:

unset($color[1]); // remove the second key out of array



หัวข้อ: Re: ผมจะลบค่าบางค่าในตัวแปร array ต้องใช้คำสั่งอะไรหรอครับ
เริ่มหัวข้อโดย: EThaiZone ที่ 21 กันยายน 2007, 10:34:19
ผมขอตอนกรณีถ้าอยากจะค้นเอาค่า red จากอาเรย์โดยเราไม่รู้ตำแหน่ง เช่นกรณีอาเรย์โดน shuffle

$key = array_search('red', $color);
if($key !== FALSE) unset($color[$key]);

ลองใช้ดูนะครับ  :)


หัวข้อ: Re: ผมจะลบค่าบางค่าในตัวแปร array ต้องใช้คำสั่งอะไรหรอครับ
เริ่มหัวข้อโดย: amaudy ที่ 21 กันยายน 2007, 10:35:38
^
^
^
ตามนั้นครับ
แถมให้อีกนิด
โค๊ด:
<?php
// Array เป้าหมาย
$color = array("red""green""blue""yellow");
// ทดลองพิมพ์ค่าออกมาดู
print_r($color);

// ตั้งค่าตัวที่ต้องการลบ
$targetDelete 'red';
echo 
"\nTarget array to delete : $targetDelete";

// หาตำแหน่งตัวที่ต้องการลบ ด้วยฟังก์ชัน array_serach()
$positionDelete array_search($targetDelete,$color);
echo 
"\nPosition of array to delete : $positionDelete\n";

//ลบออกจากอาเรย์ ด้วยคำสั่ง array_splice
array_splice($color$positionDelete,1);
// ทดลองพิมพ์ค่าออกมาดู ว่าโดนลบหรือเปล่า
print_r($color);
?>



หัวข้อ: Re: ผมจะลบค่าบางค่าในตัวแปร array ต้องใช้คำสั่งอะไรหรอครับ
เริ่มหัวข้อโดย: EThaiZone ที่ 21 กันยายน 2007, 10:44:31
เวลาใช้ array_search จำเป็นต้องเช็คค่าที่ออกมาใส่สภาพว่าใช่หรือเปล่า

สมมุติว่า
$color = array("red", "green", "blue", "yellow");

แล้วถ้าเราค้นค่า red
array_search จะคืนค่าเป็น 0 ชนิด integer
แต่ถ้าเราค้นไม่เจอ มันจะคืนเป็น FALSE ชนิด boolean

ปัญหาจะตามมาเวลาค่าหาไม่เจอเนี่ยแหละ

เมื่อก่อนผมเคยเขียนเช็คแค่ ค่าคืนมา != 0 (ใน boolean ก็เท่ากัย false)
แต่สุดท้ายมันไม่ตัดค่าแรก จนอ่านใน php.net เจอคนอธิบายกันเยอะ (สงสัยโดนเหมือนกัน 55+)

เลยต้องเช็ค !== FALSE ไปเลย เอาทั้งเช็คค่าและชนิดข้อมูลให้ตรงกัน   :P


หัวข้อ: Re: ผมจะลบค่าบางค่าในตัวแปร array ต้องใช้คำสั่งอะไรหรอครับ
เริ่มหัวข้อโดย: ball6847 ที่ 21 กันยายน 2007, 11:36:28
เวลาใช้ array_search จำเป็นต้องเช็คค่าที่ออกมาใส่สภาพว่าใช่หรือเปล่า

สมมุติว่า
$color = array("red", "green", "blue", "yellow");

แล้วถ้าเราค้นค่า red
array_search จะคืนค่าเป็น 0 ชนิด integer
แต่ถ้าเราค้นไม่เจอ มันจะคืนเป็น FALSE ชนิด boolean

ปัญหาจะตามมาเวลาค่าหาไม่เจอเนี่ยแหละ

เมื่อก่อนผมเคยเขียนเช็คแค่ ค่าคืนมา != 0 (ใน boolean ก็เท่ากัย false)
แต่สุดท้ายมันไม่ตัดค่าแรก จนอ่านใน php.net เจอคนอธิบายกันเยอะ (สงสัยโดนเหมือนกัน 55+)

เลยต้องเช็ค !== FALSE ไปเลย เอาทั้งเช็คค่าและชนิดข้อมูลให้ตรงกัน   :P

เวงกำ 555+ ทำมัยคนทำฟังก์ชั่น array_search มันไม่ส่งคืนค่าเป็น boolean อ่ะ เหอๆ
จะเอา integer จะเอา boolean ก็เอาสักอย่าง แถมคืนค่าเวลา int เป็น 0 อีก เหอๆ มันค่าเท่ากันเลยนะน่ะ

แค่โค้ดคุณ Ethaizone สั้นดีคับ เจ๋งเลย


หัวข้อ: Re: ผมจะลบค่าบางค่าในตัวแปร array ต้องใช้คำสั่งอะไรหรอครับ
เริ่มหัวข้อโดย: tarnroma ที่ 21 กันยายน 2007, 12:15:27
???
สมมุตินะครับ ผมมีตัวแปร $color=array("green","red","orange")
แล้วผมต้องการลบ ค่า red ออกจาก $color ผมจะต้องใช้คำสั่งอะไรหรือครับ(php)

จริงๆ จขกท. ต้องการแค่ลบค่าที่ต้องการออกจาก Main Array  ซึ่งจริงๆมันก็คือการลบออก ก็ใช้คำสั่ง array_diff ไปเลยคับ สั้นๆ จะลบกี่ตัวก็ทำได้คับ

โค๊ด:
$color=array("green","red","orange");//Main Array
$difcolor=array("red");//อยากจะลบอะไรเพิ่มอีกก้อเพียงเพิ่ม Member ลงไป

$color = array_diff($color, $difcolor); //คำสั่งหลักๆก็คือ array_diff นี่แหละคับ

print_r($color);//แสดง member ใน array ที่ Diff แล้ว



หัวข้อ: Re: ผมจะลบค่าบางค่าในตัวแปร array ต้องใช้คำสั่งอะไรหรอครับ
เริ่มหัวข้อโดย: catz001 ที่ 21 กันยายน 2007, 12:53:01
 :-* ขอบคุณทุกท่านที่เข้ามาช่วยกันตอบครับ ได้ประโยชน์จากทุกคำตอบที่ตอบมาเลยครับ ทำให้รู้มากกว่าเดิมเยอะเลยครับ  :)


หัวข้อ: Re: ผมจะลบค่าบางค่าในตัวแปร array ต้องใช้คำสั่งอะไรหรอครับ
เริ่มหัวข้อโดย: EThaiZone ที่ 21 กันยายน 2007, 15:13:23
เวงกำ 555+ ทำมัยคนทำฟังก์ชั่น array_search มันไม่ส่งคืนค่าเป็น boolean อ่ะ เหอๆ
จะเอา integer จะเอา boolean ก็เอาสักอย่าง แถมคืนค่าเวลา int เป็น 0 อีก เหอๆ มันค่าเท่ากันเลยนะน่ะ

แค่โค้ดคุณ Ethaizone สั้นดีคับ เจ๋งเลย

ผมก็ไม่รู้ ตอนแรกผมใช้แบบไม่เช็ค เพราะคิดว่า มันจะ false แล้วคงไม่ตัดอะไร (ตอนนั้นคิดแบบนั้นเลยไม่ใส่ if)
เหมือนกะใช้ unset ไม่มีผล  ที่ไหนได้ php เข้าใจว่า false (boolean) เป็น 0 (integer)
เลยค่าตัวแรกหายทุกทีไป -*-

ในส่วน comment หน้านั้นเลยมี หลายคนบอกกันถี่เลย หุๆ

array_diff น่าใช้ดีครับ น่าจะสบายกว่าด้วย

ปล. ถ้ามีกระทู้ php ในมุมมืด จะมีคนสนปะ ^^'


หัวข้อ: Re: ผมจะลบค่าบางค่าในตัวแปร array ต้องใช้คำสั่งอะไรหรอครับ
เริ่มหัวข้อโดย: mixture ที่ 27 ตุลาคม 2009, 04:37:38
กำลังหาเรื่องนี้อยู่พอดี ขอบคุณ คุณโจ้มากครับ สำหรับ code ที่แสนสั้นและสะดวก  :wanwan017: