PHP में सरणी से एक तत्व हटाने के लिए unset() फ़ंक्शन का उपयोग किया जाता है, लेकिन यह कुंजियों में अंतराल छोड़ देता है। कुंजियों को पुनः क्रमिक (0,1,2...) बनाने के लिए array_values() का उपयोग करें।
उदाहरण
<?php
$my_arr = array('this', 'is', 'a', 'sample', 'only');
echo "The array is ";
var_dump($my_arr);
unset($my_arr[4]); // इंडेक्स 4 ('only') हटाएं
echo "The array is now ";
$my_arr_2 = array_values($my_arr); // कुंजियाँ रीसेट
var_dump($my_arr_2);
?>
आउटपुट
The array is
array(5) {
[0]=> string(4) "this"
[1]=> string(2) "is"
[2]=> string(1) "a"
[3]=> string(6) "sample"
[4]=> string(4) "only"
}
The array is now
array(4) {
[0]=> string(4) "this"
[1]=> string(2) "is"
[2]=> string(1) "a"
[3]=> string(6) "sample"
}
चरण:
unset($arr[$index])— निर्दिष्ट कुंजी का तत्व हटाता है।array_values($arr)— सभी मानों को लेकर नई सरणी बनाता है जिनकी कुंजियाँ 0 से शुरू होती हैं।
अन्य तरीके
| विधि | कोड | कुंजियाँ रीसेट? |
|---|---|---|
unset() + array_values() | unset($arr[2]); $arr = array_values($arr); | हाँ |
array_splice() | array_splice($arr, 2, 1); | हाँ (मूल सरणी संशोधित) |
array_filter() | $arr = array_values(array_filter($arr, fn($k) => $k !== 2, ARRAY_FILTER_USE_KEY)); | हाँ |
array_splice() उदाहरण (अधिक सीधा)
<?php
$arr = ['a', 'b', 'c', 'd'];
array_splice($arr, 1, 1); // इंडेक्स 1 ('b') हटाएं
print_r($arr); // ['a', 'c', 'd'] कुंजियाँ 0,1,2
?>
सहयोगी सरणियों के लिए
सहयोगी सरणियों में "पुनः अनुक्रमित" का अर्थ कुंजियाँ बदलना नहीं, बल्कि तत्व हटाना है। unset($arr['key']) पर्याप्त है।
सावधानी
unset()के बादcount($arr)सही गिनती देता है, लेकिन$arr[3]एक्सेस करने परUndefined array keyनोटिस मिल सकता है यदि कुंजी 3 हटा दी गई थी।array_values()नई सरणी लौटाता है; मूल सरणी अपरिवर्तित रहती है जब तक असाइन न करें:$arr = array_values($arr);