มีวิธีง่าย ๆ ในการลบองค์ประกอบออกจากอาร์เรย์โดยใช้ PHP ซึ่งforeach ($array)
ไม่รวมองค์ประกอบนั้นอีกต่อไปหรือไม่
ฉันคิดว่าการตั้งค่าให้null
ทำ แต่ดูเหมือนจะไม่ทำงาน
มีวิธีง่าย ๆ ในการลบองค์ประกอบออกจากอาร์เรย์โดยใช้ PHP ซึ่งforeach ($array)
ไม่รวมองค์ประกอบนั้นอีกต่อไปหรือไม่
ฉันคิดว่าการตั้งค่าให้null
ทำ แต่ดูเหมือนจะไม่ทำงาน
คำตอบ:
มีวิธีที่แตกต่างกันในการลบองค์ประกอบอาเรย์ซึ่งบางอันมีประโยชน์มากกว่าสำหรับงานเฉพาะบางอย่าง
หากคุณต้องการลบองค์ประกอบอาเรย์หนึ่งตัวคุณสามารถใช้unset()
หรือ\array_splice()
ไม่ก็ได้
นอกจากนี้หากคุณมีค่าและไม่ทราบว่ากุญแจสำคัญในการลบองค์ประกอบที่คุณสามารถใช้\array_search()
เพื่อรับกุญแจ
unset()
โปรดทราบว่าเมื่อคุณใช้unset()
คีย์อาร์เรย์จะไม่เปลี่ยน / ทำดัชนีใหม่ หากคุณต้องการทำดัชนีคีย์ใหม่คุณสามารถใช้\array_values()
หลังจากนั้นunset()
จะแปลงคีย์ทั้งหมดเป็นคีย์ตัวเลขนับตั้งแต่ 0
รหัส
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
unset($array[1]);
//↑ Key which you want to delete
?>
เอาท์พุต
[
[0] => a
[2] => c
]
\array_splice()
วิธีหากคุณใช้\array_splice()
คีย์จะได้รับการทำดัชนีใหม่โดยอัตโนมัติ แต่รหัสที่เชื่อมโยงจะไม่เปลี่ยนแปลงเมื่อเทียบกับ\array_values()
ที่จะแปลงคีย์ทั้งหมดเป็นคีย์ตัวเลข
ด้วย \array_splice()
ต้องการการชดเชยไม่ใช่กุญแจ! เป็นพารามิเตอร์ที่สอง
รหัส
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
\array_splice($array, 1, 1);
//↑ Offset which you want to delete
?>
เอาท์พุต
[
[0] => a
[1] => c
]
array_splice()
เช่นเดียวกับการunset()
ใช้อาร์เรย์โดยอ้างอิงและนี่หมายความว่าคุณไม่ต้องการกำหนดค่าส่งคืนของฟังก์ชันเหล่านั้นกลับไปที่อาร์เรย์
หากคุณต้องการลบองค์ประกอบหลายชุดและไม่ต้องการโทรunset()
หรือ\array_splice()
หลายครั้งคุณสามารถใช้ฟังก์ชั่น\array_diff()
หรือ\array_diff_key()
ขึ้นอยู่กับว่าคุณรู้ค่าหรือปุ่มขององค์ประกอบที่คุณต้องการลบ
\array_diff()
วิธี\array_diff()
ถ้าคุณรู้ว่าคุณค่าขององค์ประกอบมากมายที่คุณต้องการลบแล้วคุณสามารถใช้ ก่อนหน้าunset()
นี้มันจะไม่เปลี่ยน / ทำดัชนีคีย์ของอาร์เรย์อีก
รหัส
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
$array = \array_diff($array, ["a", "c"]);
//└────────┘→ Array values which you want to delete
?>
เอาท์พุต
[
[1] => b
]
\array_diff_key()
วิธีหากคุณรู้ถึงองค์ประกอบต่าง ๆ ที่คุณต้องการลบคุณต้องใช้\array_diff_key()
มัน ที่นี่คุณต้องตรวจสอบให้แน่ใจว่าคุณผ่านคีย์เป็นคีย์ในพารามิเตอร์ที่สองไม่ใช่ค่า มิฉะนั้นคุณต้องพลิกอาร์เรย์ด้วย\array_flip()
มิฉะนั้นคุณจะต้องพลิกอาร์เรย์ด้วยและที่นี่กุญแจจะไม่เปลี่ยน / ทำดัชนีใหม่
รหัส
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
$array = \array_diff_key($array, [0 => "xy", "2" => "xy"]);
//↑ ↑ Array keys which you want to delete
?>
เอาท์พุต
[
[1] => b
]
นอกจากนี้หากคุณต้องการใช้unset()
หรือ\array_splice()
ลบองค์ประกอบหลายรายการด้วยค่าเดียวกันคุณสามารถใช้\array_keys()
เพื่อรับคีย์ทั้งหมดสำหรับค่าเฉพาะแล้วลบองค์ประกอบทั้งหมด
array_splice
ตามที่อธิบายไว้ในคำตอบอื่น ๆ
array (3) { [0]=>int(0) ...
เมื่อคุณunset($x[2])
จาก$x = array(1, 2, 3, 4);
ผลลัพธ์ต้องเป็นvar_dump($x); // array(3) { [0]=> int(1) [1]=> int(2) [3]=> int(4) }
(มันอาจเป็นตัวพิมพ์ใหญ่ผิดปกติ)
unset
void unset ( mixed $var [, mixed $... ] )
สามารถมีข้อโต้แย้งหลาย
ควรสังเกตว่าunset()
จะทำให้ดัชนีไม่มีการแตะต้องซึ่งเป็นสิ่งที่คุณคาดหวังเมื่อใช้ดัชนีสตริง (อาร์เรย์เป็น hashtable) แต่อาจเป็นเรื่องที่น่าแปลกใจเมื่อจัดการกับอาร์เรย์ที่จัดทำดัชนีจำนวนเต็ม:
$array = array(0, 1, 2, 3);
unset($array[2]);
var_dump($array);
/* array(3) {
[0]=>
int(0)
[1]=>
int(1)
[3]=>
int(3)
} */
$array = array(0, 1, 2, 3);
array_splice($array, 2, 1);
var_dump($array);
/* array(3) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(3)
} */
ดังนั้นarray_splice()
สามารถใช้งานได้หากคุณต้องการทำให้คีย์จำนวนเต็มเป็นปกติ ตัวเลือกอื่นกำลังใช้งานarray_values()
หลังจากunset()
:
$array = array(0, 1, 2, 3);
unset($array[2]);
$array = array_values($array);
var_dump($array);
/* array(3) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(3)
} */
array_splice
ทำให้รู้สึก (ในหมู่คนอื่น)
// Our initial array
$arr = array("blue", "green", "red", "yellow", "green", "orange", "yellow", "indigo", "red");
print_r($arr);
// Remove the elements who's values are yellow or red
$arr = array_diff($arr, array("yellow", "red"));
print_r($arr);
นี่คือผลลัพธ์จากโค้ดด้านบน:
Array
(
[0] => blue
[1] => green
[2] => red
[3] => yellow
[4] => green
[5] => orange
[6] => yellow
[7] => indigo
[8] => red
)
Array
(
[0] => blue
[1] => green
[4] => green
[5] => orange
[7] => indigo
)
ตอนนี้ array_values () จะจัดทำดัชนีอาร์เรย์อีกครั้ง แต่จะลบสตริงคีย์ทั้งหมดออกจากอาร์เรย์และแทนที่ด้วยตัวเลข หากคุณต้องการเก็บชื่อคีย์ (สตริง) หรือสร้างดัชนีใหม่หากคีย์ทั้งหมดเป็นตัวเลขให้ใช้ array_merge ():
$arr = array_merge(array_diff($arr, array("yellow", "red")));
print_r($arr);
เอาท์พุท
Array
(
[0] => blue
[1] => green
[2] => green
[3] => orange
[4] => indigo
)
$key = array_search($needle, $array);
if ($key !== false) {
unset($array[$key]);
}
unset($array[$index]);
หากคุณมีอาร์เรย์ที่จัดทำดัชนีเป็นตัวเลขโดยที่ค่าทั้งหมดไม่ซ้ำกัน (หรือไม่ซ้ำกัน แต่คุณต้องการลบอินสแตนซ์ทั้งหมดของค่าเฉพาะ) คุณสามารถใช้ array_diff () เพื่อลบองค์ประกอบที่ตรงกันดังนี้:
$my_array = array_diff($my_array, array('Value_to_remove'));
ตัวอย่างเช่น:
$my_array = array('Andy', 'Bertha', 'Charles', 'Diana');
echo sizeof($my_array) . "\n";
$my_array = array_diff($my_array, array('Charles'));
echo sizeof($my_array);
สิ่งนี้แสดงสิ่งต่อไปนี้:
4
3
ในตัวอย่างนี้องค์ประกอบที่มีค่า 'Charles' จะถูกลบออกตามที่สามารถตรวจสอบได้โดยการโทร sizeof () ที่รายงานขนาด 4 สำหรับอาร์เรย์เริ่มต้นและ 3 หลังจากการลบ
นอกจากนี้สำหรับองค์ประกอบที่ระบุชื่อ:
unset($array["elementName"]);
$a = array("A"=>1, "B"=>2, "C"=>"a");
print_r($a);
unset($a["B"]);
print_r($a);
ให้ (จัดรูปแบบ): Array ( [A] => 1 [B] => 2 [C] => a ), Array ( [A] => 1 [C] => a )
ทำลายองค์ประกอบเดียวของอาร์เรย์
unset()
$array1 = array('A', 'B', 'C', 'D', 'E');
unset($array1[2]); // Delete known index(2) value from array
var_dump($array1);
ผลลัพธ์จะเป็น:
array(4) {
[0]=>
string(1) "A"
[1]=>
string(1) "B"
[3]=>
string(1) "D"
[4]=>
string(1) "E"
}
หากคุณต้องการทำดัชนีอาร์เรย์อีกครั้ง:
$array1 = array_values($array1);
var_dump($array1);
จากนั้นผลลัพธ์จะเป็น:
array(4) {
[0]=>
string(1) "A"
[1]=>
string(1) "B"
[2]=>
string(1) "D"
[3]=>
string(1) "E"
}
นำองค์ประกอบออกจากท้ายอาร์เรย์ - คืนค่าขององค์ประกอบที่ถูกลบออก
mixed array_pop(array &$array)
$stack = array("orange", "banana", "apple", "raspberry");
$last_fruit = array_pop($stack);
print_r($stack);
print_r('Last Fruit:'.$last_fruit); // Last element of the array
ผลลัพธ์จะเป็น
Array
(
[0] => orange
[1] => banana
[2] => apple
)
Last Fruit: raspberry
ลบองค์ประกอบแรก (สีแดง) จากอาร์เรย์ - คืนค่าขององค์ประกอบที่ถูกลบ
mixed array_shift ( array &$array )
$color = array("a" => "red", "b" => "green" , "c" => "blue");
$first_color = array_shift($color);
print_r ($color);
print_r ('First Color: '.$first_color);
ผลลัพธ์จะเป็น:
Array
(
[b] => green
[c] => blue
)
First Color: red
array_shift
สร้างดัชนีรายการคีย์หากเป็นจำนวนเต็มจึงไม่ดีดังนั้นคุณสามารถใช้สิ่งนี้: stackoverflow.com/a/52826684/1407491
<?php
$stack = ["fruit1", "fruit2", "fruit3", "fruit4"];
$fruit = array_shift($stack);
print_r($stack);
echo $fruit;
?>
เอาท์พุท:
[
[0] => fruit2
[1] => fruit3
[2] => fruit4
]
fruit1
array_shift
สามารถลบองค์ประกอบแรกในอาร์เรย์ได้เท่านั้น ใช้ในทำนองเดียวกันarray_pop
เพื่อลบองค์ประกอบสุดท้ายในอาร์เรย์
เพื่อหลีกเลี่ยงการค้นหาสามารถเล่นกับarray_diff
:
$array = array(3, 9, 11, 20);
$array = array_diff($array, array(11) ); // removes 11
ในกรณีนี้เราไม่จำเป็นต้องค้นหา / ใช้กุญแจ
หากคุณต้องลบหลายค่าในอาเรย์และรายการในอาเรย์นั้นเป็นวัตถุหรือข้อมูลที่มีโครงสร้าง[array_filter][1]
เป็นทางออกที่ดีที่สุดของคุณ รายการที่ส่งคืนค่าจริงจากฟังก์ชันการเรียกกลับจะถูกเก็บไว้
$array = [
['x'=>1,'y'=>2,'z'=>3],
['x'=>2,'y'=>4,'z'=>6],
['x'=>3,'y'=>6,'z'=>9]
];
$results = array_filter($array, function($value) {
return $value['x'] > 2;
}); //=> [['x'=>3,'y'=>6,z=>'9']]
สำหรับอาร์เรย์ที่เชื่อมโยงให้ใช้unset
:
$arr = array('a' => 1, 'b' => 2, 'c' => 3);
unset($arr['b']);
// RESULT: array('a' => 1, 'c' => 3)
สำหรับอาร์เรย์ตัวเลขให้ใช้array_splice
:
$arr = array(1, 2, 3);
array_splice($arr, 1, 1);
// RESULT: array(0 => 1, 1 => 3)
การใช้unset
อาร์เรย์ตัวเลขจะไม่เกิดข้อผิดพลาด แต่จะทำให้ดัชนีของคุณยุ่งเหยิง:
$arr = array(1, 2, 3);
unset($arr[1]);
// RESULT: array(0 => 1, 2 => 3)
หากคุณต้องการลบหลายองค์ประกอบออกจากอาเรย์แบบเชื่อมโยงคุณสามารถใช้array_diff_key () (นี่ใช้กับarray_flip () ):
$my_array = array(
"key1" => "value 1",
"key2" => "value 2",
"key3" => "value 3",
"key4" => "value 4",
"key5" => "value 5",
);
$to_remove = array("key2", "key4");
$result = array_diff_key($my_array, array_flip($to_remove));
print_r($result);
เอาท์พุท:
Array ( [key1] => value 1 [key3] => value 3 [key5] => value 5 )
unset()
ทำลายตัวแปรที่ระบุ
พฤติกรรมของ unset()
ภายในของฟังก์ชั่นอาจแตกต่างกันไปขึ้นอยู่กับชนิดของตัวแปรที่คุณพยายามทำลาย
หากตัวแปรที่ทำให้เป็นโกลบอลอยู่unset()
ภายในฟังก์ชันจะมีเพียงตัวแปรโลคัลเท่านั้นที่ถูกทำลาย ตัวแปรในสภาพแวดล้อมการโทรจะเก็บค่าเดิมเหมือนก่อนที่จะunset()
ถูกเรียก
<?php
function destroy_foo()
{
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>
คำตอบของรหัสข้างต้นจะเป็นแถบบาร์
สำหรับunset()
ตัวแปรโกลบอลภายในฟังก์ชัน:
<?php
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
?>
// Remove by value
function removeFromArr($arr, $val)
{
unset($arr[array_search($val, $arr)]);
return array_values($arr);
}
หากระบุดัชนี:
$arr = ['a', 'b', 'c'];
$index = 0;
unset($arr[$index]); // $arr = ['b', 'c']
หากไม่ได้ระบุดัชนี:
$arr = ['a', 'b', 'c'];
$index = array_search('a', $arr); // search the value to find index
if($index !== false){
unset($arr[$index]); // $arr = ['b', 'c']
}
if
สภาพเป็นสิ่งจำเป็นเพราะถ้าindex
ไม่พบunset()
จะลบองค์ประกอบแรกของอาร์เรย์โดยอัตโนมัติซึ่งไม่ได้เป็นสิ่งที่เราต้องการ
Solutions:
unset($array[3]); unset($array['foo']);
unset($array[3], $array[5]); unset($array['foo'], $array['bar']);
array_splice($array, $offset, $length);
คำอธิบายเพิ่มเติม:
การใช้ฟังก์ชั่นเหล่านี้จะลบการอ้างอิงทั้งหมดไปยังองค์ประกอบเหล่านี้จาก PHP หากคุณต้องการเก็บคีย์ไว้ในอาร์เรย์ แต่ด้วยค่าว่างให้กำหนดสตริงว่างให้กับองค์ประกอบ:
$array[3] = $array['foo'] = '';
นอกจากไวยากรณ์แล้วยังมีความแตกต่างทางตรรกะระหว่างการใช้unset ()และการกำหนด '' ให้กับองค์ประกอบ ตัวแรกบอกว่าThis doesn't exist anymore,
ในขณะที่ตัวที่สองบอกว่าThis still exists, but its value is the empty string.
หากคุณกำลังติดต่อกับตัวเลขการกำหนด 0 อาจเป็นทางเลือกที่ดีกว่า ดังนั้นหาก บริษัท หยุดการผลิตรุ่น XL1000 เฟืองมันจะอัปเดตสินค้าคงคลังด้วย:
unset($products['XL1000']);
อย่างไรก็ตามถ้ามันหมดไปจากเฟือง XL1000 ชั่วคราว แต่กำลังวางแผนที่จะรับการจัดส่งใหม่จากโรงงานในปลายสัปดาห์นี้มันจะดีกว่า:
$products['XL1000'] = 0;
หากคุณไม่ได้ตั้งค่า ()องค์ประกอบ PHP จะปรับอาร์เรย์เพื่อให้การวนซ้ำยังคงทำงานได้อย่างถูกต้อง มันไม่กระชับอาร์เรย์กรอกข้อมูลลงในหลุมที่ขาดหายไป นี่คือสิ่งที่เราหมายถึงเมื่อเราบอกว่าอาร์เรย์ทั้งหมดมีความเชื่อมโยงกันแม้ว่ามันจะเป็นตัวเลขก็ตาม นี่คือตัวอย่าง:
// Create a "numeric" array
$animals = array('ant', 'bee', 'cat', 'dog', 'elk', 'fox');
print $animals[1]; // Prints 'bee'
print $animals[2]; // Prints 'cat'
count($animals); // Returns 6
// unset()
unset($animals[1]); // Removes element $animals[1] = 'bee'
print $animals[1]; // Prints '' and throws an E_NOTICE error
print $animals[2]; // Still prints 'cat'
count($animals); // Returns 5, even though $array[5] is 'fox'
// Add a new element
$animals[ ] = 'gnu'; // Add a new element (not Unix)
print $animals[1]; // Prints '', still empty
print $animals[6]; // Prints 'gnu', this is where 'gnu' ended up
count($animals); // Returns 6
// Assign ''
$animals[2] = ''; // Zero out value
print $animals[2]; // Prints ''
count($animals); // Returns 6, count does not decrease
ในการกระชับอาร์เรย์ให้เป็นอาร์เรย์ตัวเลขที่มีความหนาแน่นสูงให้ใช้array_values () :
$animals = array_values($animals);
หรืออีกทางหนึ่งคือarray_splice () ทำดัชนีอาร์เรย์อีกครั้งโดยอัตโนมัติเพื่อหลีกเลี่ยงการออกจากรู:
// Create a "numeric" array
$animals = array('ant', 'bee', 'cat', 'dog', 'elk', 'fox');
array_splice($animals, 2, 2);
print_r($animals);
Array
(
[0] => ant
[1] => bee
[2] => elk
[3] => fox
)
สิ่งนี้มีประโยชน์หากคุณกำลังใช้อาร์เรย์เป็นคิวและต้องการลบรายการออกจากคิวในขณะที่ยังอนุญาตการเข้าถึงแบบสุ่ม ในการลบองค์ประกอบแรกหรือองค์ประกอบสุดท้ายออกจากอาร์เรย์อย่างปลอดภัยให้ใช้array_shift ()และarray_pop ()ตามลำดับ
ฉันแค่อยากจะบอกว่าฉันมีวัตถุเฉพาะที่มีแอตทริบิวต์ตัวแปร (โดยทั่วไปแล้วคือการจับคู่ตารางและฉันเปลี่ยนคอลัมน์ในตารางดังนั้นคุณลักษณะในวัตถุที่สะท้อนถึงตารางจะแตกต่างกันเช่นกัน):
class obj {
protected $fields = array('field1','field2');
protected $field1 = array();
protected $field2 = array();
protected loadfields(){}
// This will load the $field1 and $field2 with rows of data for the column they describe
protected function clearFields($num){
foreach($fields as $field) {
unset($this->$field[$num]);
// This did not work the line below worked
unset($this->{$field}[$num]); // You have to resolve $field first using {}
}
}
}
วัตถุประสงค์ทั้งหมดของการ$fields
เป็นเพียงแค่ดังนั้นฉันไม่ต้องมองทุกที่ในรหัสเมื่อพวกเขาเปลี่ยนฉันเพียงแค่ดูที่จุดเริ่มต้นของชั้นเรียนและเปลี่ยนรายการของคุณลักษณะและเนื้อหาอาร์เรย์ของเขตข้อมูล $เพื่อให้สะท้อนถึงใหม่ คุณลักษณะ.
ทำตามฟังก์ชั่นเริ่มต้น:
ผม)
$Array = array("test1", "test2", "test3", "test3");
unset($Array[2]);
ii)
$Array = array("test1", "test2", "test3", "test3");
array_pop($Array);
สาม)
$Array = array("test1", "test2", "test3", "test3");
array_splice($Array,1,2);
iv)
$Array = array("test1", "test2", "test3", "test3");
array_shift($Array);
<?php
$array = array("your array");
$array = array_diff($array, ["element you want to delete"]);
?>
สร้างอาร์เรย์ของคุณในตัวแปร$array
แล้วที่ฉันได้ใส่ 'องค์ประกอบที่คุณต้องการลบ' คุณใส่สิ่งที่ชอบ: "a" และถ้าคุณต้องการลบหลายรายการ: "a", "b"
ใช้ array_search เพื่อรับรหัสและลบออกโดยไม่ได้ตั้งค่าหากพบ:
if (($key = array_search('word', $array)) !== false) {
unset($array[$key]);
}
แม้ว่าunset()
จะถูกกล่าวถึงที่นี่หลายครั้ง แต่ก็ยังไม่ได้รับการกล่าวถึงว่าunset()
ยอมรับตัวแปรหลายตัวทำให้ง่ายต่อการลบองค์ประกอบที่ไม่ต่อเนื่องหลายองค์ประกอบจากอาร์เรย์ในการดำเนินการครั้งเดียว:
// Delete multiple, noncontiguous elements from an array
$array = [ 'foo', 'bar', 'baz', 'quz' ];
unset( $array[2], $array[3] );
print_r($array);
// Output: [ 'foo', 'bar' ]
unset () ไม่ยอมรับอาร์เรย์ของคีย์ที่จะลบดังนั้นโค้ดด้านล่างจะล้มเหลว (มันจะทำให้การใช้ unset () แบบไดนามิกนั้นง่ายขึ้นเล็กน้อย)
$array = range(0,5);
$remove = [1,2];
$array = unset( $remove ); // FAILS: "unexpected 'unset'"
print_r($array);
สามารถใช้ unset () แบบไดนามิกในลูป foreach แทน:
$array = range(0,5);
$remove = [1,2];
foreach ($remove as $k=>$v) {
unset($array[$v]);
}
print_r($array);
// Output: [ 0, 3, 4, 5 ]
นอกจากนี้ยังมีแนวปฏิบัติอื่นที่ยังไม่ได้กล่าวถึง บางครั้งวิธีที่ง่ายที่สุดในการกำจัดคีย์อาเรย์บางอย่างคือการคัดลอก $ array1 ไปยัง $ array2
$array1 = range(1,10);
foreach ($array1 as $v) {
// Remove all even integers from the array
if( $v % 2 ) {
$array2[] = $v;
}
}
print_r($array2);
// Output: [ 1, 3, 5, 7, 9 ];
เห็นได้ชัดว่าการปฏิบัติเดียวกันกับสตริงข้อความ:
$array1 = [ 'foo', '_bar', 'baz' ];
foreach ($array1 as $v) {
// Remove all strings beginning with underscore
if( strpos($v,'_')===false ) {
$array2[] = $v;
}
}
print_r($array2);
// Output: [ 'foo', 'baz' ]
ใช้unset
ฟังก์ชั่นด้านล่าง:
$a = array(
'salam',
'10',
1
);
unset($a[1]);
print_r($a);
/*
Output:
Array
(
[0] => salam
[2] => 1
)
*/
ใช้array_search
ฟังก์ชั่นเพื่อรับรหัสองค์ประกอบและใช้วิธีการด้านบนเพื่อลบองค์ประกอบอาร์เรย์ดังนี้
$a = array(
'salam',
'10',
1
);
$key = array_search(10, $a);
if ($key !== false) {
unset($a[$key]);
}
print_r($a);
/*
Output:
Array
(
[0] => salam
[2] => 1
)
*/
สองวิธีในการลบรายการแรกของอาร์เรย์ด้วยการรักษาลำดับของดัชนีและหากคุณไม่ทราบชื่อคีย์ของรายการแรก
// 1 is the index of the first object to get
// NULL to get everything until the end
// true to preserve keys
$array = array_slice($array, 1, null, true);
// Rewinds the array's internal pointer to the first element
// and returns the value of the first array element.
$value = reset($array);
// Returns the index element of the current array position
$key = key($array);
unset($array[$key]);
สำหรับข้อมูลตัวอย่างนี้:
$array = array(10 => "a", 20 => "b", 30 => "c");
คุณต้องมีผลลัพธ์นี้:
array(2) {
[20]=>
string(1) "b"
[30]=>
string(1) "c"
}
ใช้รหัสต่อไปนี้:
$arr = array('orange', 'banana', 'apple', 'raspberry');
$result = array_pop($arr);
print_r($result);
array_pop($arr)
จะลบรายการสุดท้าย ไม่จำเป็นต้อง =
<?php
// If you want to remove a particular array element use this method
$my_array = array("key1"=>"value 1", "key2"=>"value 2", "key3"=>"value 3");
print_r($my_array);
if (array_key_exists("key1", $my_array)) {
unset($my_array['key1']);
print_r($my_array);
}
else {
echo "Key does not exist";
}
?>
<?php
//To remove first array element
$my_array = array("key1"=>"value 1", "key2"=>"value 2", "key3"=>"value 3");
print_r($my_array);
$new_array = array_slice($my_array, 1);
print_r($new_array);
?>
<?php
echo "<br/> ";
// To remove first array element to length
// starts from first and remove two element
$my_array = array("key1"=>"value 1", "key2"=>"value 2", "key3"=>"value 3");
print_r($my_array);
$new_array = array_slice($my_array, 1, 2);
print_r($new_array);
?>
เอาท์พุต
Array ( [key1] => value 1 [key2] => value 2 [key3] =>
value 3 ) Array ( [key2] => value 2 [key3] => value 3 )
Array ( [key1] => value 1 [key2] => value 2 [key3] => value 3 )
Array ( [key2] => value 2 [key3] => value 3 )
Array ( [key1] => value 1 [key2] => value 2 [key3] => value 3 )
Array ( [key2] => value 2 [key3] => value 3 )
สำหรับอาร์เรย์ที่เชื่อมโยงโดยใช้คีย์ที่ไม่ใช่จำนวนเต็ม:
เพียงแค่ unset($array[$key])
จะทำงาน
สำหรับอาร์เรย์ที่มีคีย์จำนวนเต็มและหากคุณต้องการบำรุงรักษาคีย์:
$array = [ 'mango', 'red', 'orange', 'grapes'];
unset($array[2]);
$array = array_values($array);
array_splice($array, 2, 1);
สิ่งนี้อาจช่วย ...
<?php
$a1 = array("a"=>"red", "b"=>"green", "c"=>"blue", "d"=>"yellow");
$a2 = array("a"=>"purple", "b"=>"orange");
array_splice($a1, 0, 2, $a2);
print_r($a1);
?>
ผลลัพธ์จะเป็น:
Array ( [0] => purple [1] => orange [c] => blue [d] => yellow )
$arrayName = array( '1' => 'somevalue',
'2' => 'somevalue1',
'3' => 'somevalue3',
);
print_r($arrayName[1]);
// somevalue
unset($arrayName[1]);
print_r($arrayName);
unset()
การวนซ้ำในอาร์เรย์จะไม่รวมค่าที่ถูกลบอีกต่อไป OTOH มันเป็นความจริงที่คำตอบของ Stevan นั้นเพียงพอและจริงๆแล้วคือคำตอบที่ฉันกำลังมองหา - แต่ไม่ใช่ OP :)