दिलचस्प पोस्ट
व्यवस्थापक के रूप में चलाने के लिए मैं अपने .NET अनुप्रयोग को कैसे लागू कर सकता हूं? Serialization और deserialization के दौरान JSON संपत्ति के विभिन्न नाम नई डेटा.फ्रेम में एक कारक के स्तर के आधार पर डेटा विभाजित करें। फ्रेम एचटीएमएल को पीडीएफ में कनवर्ट करने के लिए iText का उपयोग करना कैसे सी # में एक फ़ाइल को पढ़ने और लिखने के लिए जावास्क्रिप्ट में दो सरणियों के बीच अंतर कैसे प्राप्त करें? जावा 8: स्ट्रीम बनाम स्ट्रीम के प्रदर्शन मैं सी # में यादृच्छिक अक्षरांकीय स्ट्रिंग कैसे उत्पन्न करूं? क्लासनाम द्वारा DOM तत्व प्राप्त करना हमें सी ++ में शुद्ध वर्चुअल डिस्ट्रक्टर की आवश्यकता क्यों है? किसी डेटाबेस से कनेक्ट करते हुए कक्षा .forएन नाम ("oracle.jdbc.driver.OracleDriver") का वास्तविक उपयोग क्या है? AndroidHttpClient के लिए डिफ़ॉल्ट एचटीटीपी क्लाइंट सी में% n प्रारूप विनिर्देशक का क्या उपयोग है? वास्तव में माइक्रोसॉफ्ट विज़ुअल सी ++ के दो-चरण टेम्पलेट इंस्टाशन के साथ "टूटी हुई" क्या है? आप एक आदेश सूची में संख्या कैसे अनुकूलित कर सकते हैं?

PHP: एक सरणी से एक तत्व को हटा दें

PHP सरणी से एक तत्व को हटाने का एक आसान तरीका है, जैसे कि foreach ($array) अब उस तत्व को शामिल नहीं करता है?

मैंने सोचा था कि इसे स्थापित करने के लिए null करना होगा, लेकिन जाहिरा तौर पर नहीं।

वेब के समाधान से एकत्रित समाधान "PHP: एक सरणी से एक तत्व को हटा दें"

एक सरणी तत्व को हटाने के विभिन्न तरीके हैं, जहां कुछ अन्य कार्यों की तुलना में कुछ विशिष्ट कार्यों के लिए अधिक उपयोगी होते हैं।

एक सरणी तत्व हटाएं

यदि आप केवल एक सरणी तत्व को हटाना चाहते हैं तो आप unset() या वैकल्पिक array_splice() उपयोग कर सकते हैं।

इसके अलावा, अगर आपके पास मान है और तत्व को हटाने के लिए कुंजी को नहीं पता है तो आप कुंजी प्राप्त करने के लिए array_search() का उपयोग कर सकते हैं।

unset() विधि

ध्यान दें कि जब आप unset() का उपयोग करते हैं, तो सरणी कुंजियों / reindex नहीं बदलेगा यदि आप कुंजी को फिर से बदलना चाहते हैं तो आप array_values() को unset() बाद उपयोग कर सकते हैं जो कि सभी कुंजी को 0 से शुरू होने वाले संख्यात्मक एन्यूमेरेटेड कुंजियों में बदल देगा।

कोड

 <?php $array = array(0 => "a", 1 => "b", 2 => "c"); unset($array[1]); //↑ Key which you want to delete ?> 

उत्पादन

 Array ( [0] => a [2] => c ) 

array_splice() विधि

यदि आप array_splice() का उपयोग करते हैं, तो चाबियाँ स्वचालित रूप से array_splice() हो जाएंगी, लेकिन साहचर्य कुंजियों को array_values() विपरीत नहीं बदलेगा जो कि सभी कुंजी को संख्यात्मक कुंजी में बदल देगा।

इसके अलावा array_splice() को ऑफसेट की आवश्यकता नहीं है, कुंजी! दूसरे पैरामीटर के रूप में।

कोड

 <?php $array = array(0 => "a", 1 => "b", 2 => "c"); array_splice($array, 1, 1); //↑ Offset which you want to delete ?> 

उत्पादन

 Array ( [0] => a [1] => c ) 

array_splice() उसी तरह से unset() संदर्भ के अनुसार सरणी लेते हैं, इसका अर्थ है कि आप उस फ़ंक्शन के वापस आने वाले मानों को सरणी में वापस नहीं देना चाहते हैं।

एकाधिक सरणी तत्व हटाएं

यदि आप एकाधिक सरणी तत्वों को हटाना चाहते हैं और unset() या array_splice() कई बार कॉल नहीं करना चाहते हैं, तो आप फ़ंक्शन array_diff() या array_diff_key() उपयोग कर सकते हैं यदि आप मूल्यों या तत्वों की कुंजी जानते हैं आप हटाना चाहते हैं

array_diff() विधि

यदि आप सरणी तत्वों के मूल्यों को जानते हैं जिन्हें आप हटाना चाहते हैं, तो आप array_diff() उपयोग कर सकते हैं। जैसा कि पहले unset() यह सरणी की चाबियों को नहीं बदलता / फिर से बदलता है।

कोड

 <?php $array = array(0 => "a", 1 => "b", 2 => "c"); $array = array_diff($array, ["a", "c"]); //└────────┘→ Array values which you want to delete ?> 

उत्पादन

 Array ( [1] => b ) 

array_diff_key() विधि

यदि आप उन तत्वों की चाबियाँ जानते हैं जिन्हें आप हटाना चाहते हैं, तो आप array_diff_key() का उपयोग करना चाहते हैं। यहां आपको यह सुनिश्चित करना है कि आप कुंजी को दूसरे पैरामीटर में कुंजी के रूप में पास करते हैं और मूल्य के रूप में नहीं। अन्यथा आपको array_flip() साथ सरणी फ्लिप करना होगा और यहां भी चाबियाँ / रीइंडेक्स बदल नहींेंगी

कोड

 <?php $array = array(0 => "a", 1 => "b", 2 => "c"); $array = array_diff_key($array, [0 => "xy", "2" => "xy"]); //↑ ↑ Array keys which you want to delete ?> 

उत्पादन

 Array ( [1] => b ) 

इसके अलावा यदि आप एक विशिष्ट मान के लिए सभी कुंजी प्राप्त करने के लिए array_keys() का उपयोग कर एक ही मान के साथ कई तत्वों को हटाने के लिए unset() या array_splice() का उपयोग करना चाहते हैं और फिर सभी तत्वों को हटा दें।

यह ध्यान दिया जाना चाहिए कि unset() अनुक्रमित अछूते रहेंगे, जो कि स्ट्रैड इंडेक्सेस (हेशैलेट के रूप में सरणी) का उपयोग करते समय आप क्या अपेक्षा करते हैं, लेकिन पूर्णांक अनुक्रमित एरे से निपटने में काफी आश्चर्य की बात हो सकती है:

 $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() का उपयोग किया जा सकता है यदि आप अपनी पूर्णांक कुंजी को सामान्य करने के लिए चाहते हैं एक अन्य विकल्प unset() बाद array_values() का उपयोग कर रहा है:

 $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) } */ 
  // 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 ​​() एक संख्यात्मक सरणी को अच्छी तरह से रीनिंडेक्स करेगा, लेकिन सरणी से सभी प्रमुख स्ट्रिंग्स को निकाल देगा और उन्हें संख्याओं के साथ प्रतिस्थापित कर देगा। यदि आपको कुंजी नामों (तार) को संरक्षित करने की आवश्यकता है, या सभी कुंजी संख्यात्मक हैं, तो सरणी reindex की आवश्यकता है, 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]); } 

यदि आपके पास संख्यात्मक रूप से अनुक्रमित सरणी है जहां सभी मान अद्वितीय होते हैं (या वे गैर-अनन्य हैं लेकिन आप किसी विशेष मान के सभी उदाहरणों को हटाना चाहते हैं), तो आप एक समान तत्व को निकालने के लिए केवल 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 

इस उदाहरण में, मूल्य 'चार्ल्स' के साथ तत्व को हटा दिया जाता है, जैसा कि आकार के () कॉल द्वारा सत्यापित किया जा सकता है जो प्रारंभिक सरणी के लिए 4 के आकार की रिपोर्ट करता है, और 3 हटाने के बाद।

 unset($array[$index]); 

इसके अलावा, एक नामित तत्व के लिए:

unset($array["elementName"]);

 <?php $stack = array("fruit1", "fruit2", "fruit3", "fruit4"); $fruit = array_shift($stack); print_r($stack); echo $fruit; ?> 

आउटपुट:

 Array ( [0] => fruit2 [1] => fruit3 [2] => fruit4 ) fruit1 

एक सरणी के एक तत्व को नष्ट करें

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_diff साथ खेल सकते हैं:

 $array = array(3, 9, 11, 20); $array = array_diff($array, array(11) ); // removes 11 

इस मामले में किसी को खोज / कुंजी का उपयोग नहीं करना पड़ता है।

unset() निर्दिष्ट चर को नष्ट कर देता है

किसी फ़ंक्शन के 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(); ?> 

एसोसिएटिव एरेज़

साहचर्य एरे के लिए, unset :

 $arr = array('a' => 1, 'b' => 2, 'c' => 3); unset($arr['b']); // RESULT : array('a' => 1, 'c' => 3) 

संख्यात्मक सरणियों

संख्यात्मक एरे के लिए, array_splice उपयोग 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_filter][1] हैं और उस सरणी में प्रविष्टियां ऑब्जेक्ट या संरचित डेटा हैं, तो [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']] 

यदि आपको एक साहचर्य सरणी से कई तत्वों को निकालना है, तो आप 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 ) 
 /* * Remove by value */ public function removeFromArr($arr, $val) { unset($arr[array_search($val, $arr)]); return array_values($arr); } 

डिफ़ॉल्ट कार्यों का पालन करें

 i) $Array = array("test1","test2","test3","test3"); unset($Array[2]); ii) $Array = array("test1","test2","test3","test3"); array_pop($Array); iii) $Array = array("test1","test2","test3","test3"); array_splice($Array,1,2); iv) $Array = array("test1","test2","test3","test3"); array_shift($Array); 

मान लीजिए आपके पास ऐसी कोई सरणी है:

 Array ( [user_id] => 193 [storage] => 5 ) 

storage को हटाने के लिए, करें:

 unset($attributes['storage']); $attributes = array_filter($attributes); 

और आप प्राप्त करते हैं:

 Array ( [user_id] => 193 ) 
 $arr = array('orange', 'banana', 'apple', 'raspberry'); $result= array_pop($arr); print_r($result); 

मैं बस कहना चाहूंगा कि मेरे पास एक विशेष ऑब्जेक्ट था, जो कि चर के गुण होते थे (यह मूल रूप से एक तालिका को मानचित्रण कर रहा था और मैं तालिका में कॉलम बदल रहा था, इसलिए ऑब्जेक्ट में विशेषताएँ, तालिका को प्रतिबिंबित करने के साथ-साथ अलग-अलग हो

 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 {} } } } 

$ फ़ील्ड का पूरा उद्देश्य सिर्फ इतना है कि मुझे कोड में जब भी बदल दिया गया तो मुझे हर जगह नहीं दिखाना चाहिए, मैं सिर्फ कक्षा की शुरुआत देखता हूं और विशेषताओं की सूची और $ फ़ील्ड सरणी सामग्री को प्रतिबिंबित करने के लिए बदलता हूं नई विशेषताओं

यह समझने के लिए थोड़ी सी समय मुझे ले लिया आशा है कि यह किसी को मदद कर सकता है

 <?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 फ़ंक्शन का उपयोग करें:

 $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 ) */ 
 <?php $array = array("your array"); $array = array_diff($array, ["element you want to delete"]); ?> 

चर अरैरे में अपनी सरणी बनाएं और फिर जहां मैंने 'एलीमेंट जिसे आप हटाना चाहते हैं' डाल दिया है, आप ऐसा कुछ डालते हैं: "a"। और अगर आप इसके बाद कई को हटाना चाहते हैं: "a", "b"

यह मदद कर सकता है …

 <?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 ) 

आप में से उन लोगों के लिए जो रूबी के hash#delete की तलाश कर रहे हैं hash#delete php में समतुल्य hash#delete :

 <?php function array_delete(&$array, $key) { if (!isset($array[$key])) { return null; } $value = $array[$key]; unset($array[$key]); return $value; } 

जोड़ना क्योंकि यह पहली बार हुआ था कि मैं यहाँ गया था …

जब किसी तत्व को PHP में सरणी से हटाया जाता है, तो उपयोग करने के लिए एक अच्छा कार्य अनसेट फ़ंक्शन है। यहां इसके उपयोग का एक उदाहरण है:

 $anArray = array("X", "Y", "Z"); unset($anArray[0]); //'dumps' the content of $anArray to the page: var_dump($anArray); 

Var_dump फ़ंक्शन का आउटपुट होगा:

 array(2) { [1]=> string(1) "Y" [2]=> string(1) "Z" } 

आप एक सरणी को हटाने के लिए बस unset() का उपयोग कर सकते हैं।

याद रखें कि foreach फ़ंक्शन के बाद सरणी अनसेट नहीं होनी चाहिए।