PHP में सरणी से खाली/नल/झूठे मान वाले तत्वों को हटाने के लिए foreach लूप के साथ unset() और empty() का उपयोग किया जा सकता है। हालाँकि, बिल्ट-इन array_filter() फ़ंक्शन अधिक सरल और कुशल है।
दिया गया उदाहरण (मैनुअल तरीका)
<?php
$my_array = array("This", 91, '', null, 102, "is", false, "a", "sample", null);
foreach ($my_array as $key => $val)
if (empty($val))
unset($my_array[$key]);
echo "After removing null values from the array, the array has the below elements -";
foreach ($my_array as $key => $val)
echo ($my_array[$key] . "
");
?>
आउटपुट
After removing null values from the array, the array has the below elements - This 91 102 is a sample
नोट: empty() निम्न को "खाली" मानता है: "", 0, "0", null, false, []। इसलिए 0 या "0" भी हट जाएँगे!
बेहतर तरीका: array_filter()
<?php
$my_array = array("This", 91, '', null, 102, "is", false, "a", "sample", null);
// डिफ़ॉल्ट: सभी "खाली" मान हटाता है (0 और "0" भी हट जाएँगे)
$filtered = array_filter($my_array);
print_r($filtered);
// केवल null और खाली स्ट्रिंग हटाने के लिए कस्टम कॉलबैक
$filtered2 = array_filter($my_array, function($v) {
return $v !== '' && $v !== null;
});
print_r($filtered2);
?>
आउटपुट तुलना
// डिफ़ॉल्ट array_filter (0 और "0" भी हटाता है) Array ( [0] => This [1] => 91 [5] => is [7] => a [8] => sample ) // कस्टम कॉलबैक (केवल null और '' हटाता है, 0 और false रखता है) Array ( [0] => This [1] => 91 [5] => is [6] => [7] => a [8] => sample ) // नोट: false भी रखा गया (इंडेक्स 6), लेकिन प्रिंट नहीं होता
कुंजियाँ पुनः अनुक्रमित करना
array_filter() कुंजियाँ संरक्षित रखता है। संख्यात्मक कुंजियाँ रीसेट करने के लिए:
<?php $filtered = array_values(array_filter($my_array)); ?>
सारांश
- सरल मामलों के लिए:
array_filter($arr)उपयोग करें। - चयनात्मक हटाने के लिए: कस्टम कॉलबैक के साथ
array_filter()। - मैनुअल लूप: केवल तभी जब जटिल लॉजिक हो जो फ़िल्टर में फिट न हो।
- सावधानी:
empty()0और"0"को भी हटा देता है — अक्सर अवांछित।