পিএইচপি-তে একটি অ্যারে থেকে একটি উপাদান মোছা


2511

পিএইচপি ব্যবহার করে অ্যারের থেকে কোনও উপাদান মুছার সহজ উপায় কি এই জাতীয় উপাদানটির foreach ($array)আর অন্তর্ভুক্ত নয়?

আমি ভেবেছিলাম যে এটির সেটিংস এটি nullকরবে তবে দৃশ্যত এটি কাজ করে না।


14
আমি চাইব না যে কনরাড উত্তরটি বর্ণিত সমস্যার সহজতম উত্তর। unset()অ্যারের উপরে পুনরাবৃত্তির সাথে মুছে ফেলা মানটি আর অন্তর্ভুক্ত করা হবে না। ওহ, এটি সত্য যে স্টিভান উত্তরটি যথেষ্ট এবং আসলে, আমি যে উত্তরটি খুঁজছিলাম - কিন্তু ওপি নয় :)
ব্র্যান্ডজিজি

32
@ ফালিপ ম্যানুয়ালটিতে সহজেই সন্ধান করা স্ট্যাকওভারফ্লোতে কোনও প্রশ্নকে আটকায় না। যদি প্রশ্নটি একটি সদৃশ স্ট্যাকওভারফ্লো প্রশ্ন ছিল তবে এটি এখানে অন্তর্ভুক্ত নাও হতে পারে। ম্যানুয়ালটিতে দেখার আগেও গ্যাক-টু বিকল্প হিসাবে উত্তরগুলি খুঁজে পাওয়ার জন্য স্ট্যাকওভারফ্লো একটি ভাল জায়গা।
ড্যান নিসেনবাউম

5
@unset ($ অ্যারে [$ Key]); $ অ্যারে = অ্যারে_ভ্যালু ($ অ্যারে);
ট্রোজান

এটি একটি ফোরচ লুপে অপসারণ সম্পর্কিত সম্পর্কিত প্রশ্ন: স্ট্যাকওভারফ্লো
লেগোলাস

আপনি যদি অ্যারে (অ্যাসোসিয়েটিভ অ্যারে) থেকে কীগুলি সরিয়ে ফেলতে চান তবে স্ট্যাকওভারফ্লো
সোমনাথ মুলুক

উত্তর:


2868

অ্যারে উপাদান মুছার বিভিন্ন উপায় রয়েছে, যেখানে কিছু নির্দিষ্ট কাজের জন্য অন্যের চেয়ে বেশি কার্যকর more

একটি অ্যারের উপাদান মুছুন

আপনি যদি কেবল একটি অ্যারে উপাদান মুছতে চান তবে আপনি 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()রেফারেন্স হিসাবে অ্যারে নিতে একই , এবং এর অর্থ হল আপনি সেই ফাংশনগুলির রিটার্ন মানগুলি অ্যারেতে ফিরিয়ে দিতে চান না want

একাধিক অ্যারে উপাদান মুছুন

আপনি যদি একাধিক অ্যারে উপাদানগুলি মুছতে চান এবং কল করতে চান না 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()একটি নির্দিষ্ট মানের জন্য সমস্ত কীগুলি পেতে এবং তারপরে সমস্ত উপাদান মুছতে পারেন।


25
@ আলেকজান্দ্রুরাদা না, আপনি বলেছিলেন যে "এটি ব্যবহার করবেন না" - এবং এটি কেবল বাজে কথা। আপনি কোনও অ্যারে যেমন ব্যবহার করেন তখন এটি নিরাপদে এই পদ্ধতিটি ব্যবহার করতে পারেন - অভিধান। আপনি যদি ধারাবাহিক সংখ্যাসূচক সূচকগুলির প্রত্যাশা করে থাকেন তবেই আপনাকে অন্য কিছু ব্যবহার করতে হবে।
কনরাড রুডল্ফ

2
অন্যান্য উত্তরে array_spliceবর্ণিত হিসাবে @ আলেকজান্ডার ব্যবহার করুন ।
কনরাড রুডল্ফ

1
@AlexandruRada কোন ভাবে আপনি থাকতে পারে 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) }(এটা সম্ভবত টাইপো ছিল না)
inemanja

5
unsetএকাধিক আর্গুমেন্ট থাকতে পারে: void unset ( mixed $var [, mixed $... ] )
12

3
অ্যারে_ফিল্টার একটি কার্যকর পদ্ধতি। বিশেষত ভাল যদি আপনি অ্যারেটি পরিবর্তন করতে না চান তবে এটি পুনর্নির্দেশও না দেয় যা json_encode নিয়ে সমস্যা হতে পারে। php.net/manual/en/function.json-encode.php#94157
dotnetCarpenter

1358

এটি লক্ষ করা উচিত যে 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()যদি আপনার পূর্ণসংখ্যা কীগুলি স্বাভাবিক করতে চান তবে এটি ব্যবহার করা যেতে পারে। এর 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)
} */

42
এটা তোলে এর মূল্য লক্ষ করেন, যখন আপনি array_splice () ব্যবহার করছেন আপনি OFFSET, কী না জানতে হবে, কিন্তু অফসেট যাই হোক না কেন উপাদানের আপনি সরাতে চান (!)
টম

18
@ টম: একটি নিয়মিত অ্যারে (যা ধারাবাহিকভাবে পূর্ণসংখ্যার-সূচকযুক্ত) অফসেটটি সূচক। এটিই array_spliceঅন্যদের মধ্যে উপলব্ধি করতে পারে।
স্টিফান গেহরিগ

5
হ্যাঁ অবশ্যই, তবে কেবল কিছু মনে রাখবেন যদি আপনি স্প্লাইস ব্যবহারের আগে অ্যারের সাথে টেম্পার করেন
টম

4
বিশালাকার অ্যারে থেকে এক টন উপাদান মুছে ফেলার কেবলমাত্র একটি প্রাথমিক পরীক্ষা থেকে, অ্যারে_স্প্লাইসটি অনেক দ্রুত এবং কম মেমরি নিবিড় বলে মনে হয়। এটি আমার প্রত্যাশার সাথে মেলে: অ্যারে_ভ্যালুগুলি () মনে হয় অ্যারেটির একটি অনুলিপি তৈরি করছে, যখন অ্যারে_স্প্লাইস জায়গায় কাজ করছে।
ডগ কাভেন্ডেক

4
অ্যারে_ভ্যালুগুলি হ'ল একটি কার্যকর পন্থা যখন আপনি কোনও লুপে উপাদানগুলি সরিয়ে ফেলছেন এবং সূচীগুলি সামঞ্জস্যপূর্ণ থাকতে চান তবে লুপের পরে সেগুলি সঙ্কুচিত করতে চান।
রোরিক

370
  // 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
)

এখন, অ্যারে_ভ্যালুগুলি () একটি সংখ্যাসূচক অ্যারেটিকে সুন্দরভাবে পুনর্নির্মাণ করবে তবে এটি অ্যারে থেকে সমস্ত কী স্ট্রিংগুলি সরিয়ে দেবে এবং তাদের সংখ্যার সাথে প্রতিস্থাপন করবে। আপনার যদি কী (নামগুলি (স্ট্রিং) সংরক্ষণ করার প্রয়োজন হয়, বা যদি সমস্ত কীগুলি সংখ্যাসূচক হয় তবে অ্যারেটিকে পুনর্নির্দেশের প্রয়োজন হয়, অ্যারে_মিয়ার () ব্যবহার করুন:

$arr = array_merge(array_diff($arr, array("yellow", "red")));
print_r($arr);

আউটপুট

Array
(
    [0] => blue
    [1] => green
    [2] => green
    [3] => orange
    [4] => indigo
)

$ get_ নিমজ্জিত_মূল্যগুলি = অ্যারে_সেমে ($ ডেটা ['রেজোল'], $ ডেটা ['চেক_রেস']); যখন আমি এই মুদ্রণ_আর মুদ্রণ করি ($ get_ নিমজ্জিত_মূল্য); এটি নিম্নলিখিত প্রদর্শন করে। অ্যারে ([0] => অ্যারে ([মেনু_কোড] => 2 [মেনু_নাম] => উদ্ভিদ [মেনু_অর্ডার_নো] => 1) [1] => অ্যারে ([মেনু_কোড] => 3 [মেনু_নাম] => লাইন [মেনু_অর্ডার_না] => ২)) তবে আমার menu get_ নিমজ্জিত_মূল্যগুলি ['মেনু_নাম'] যথাক্রমে _ get_ নিমজ্জিত_মূল্যগুলি [0] [মেনু_কোড], $ get_ নিমজ্জিত_মূল্য [0] ব্যবহার করে মেনু_কোড এবং মেনু_নামের মানগুলি পাওয়া দরকার 0 ] [MENU_NAME]। দয়া করে আমাকে কীভাবে এটি করতে সাহায্য করুন?
হার্ট হ্যাকার

203
$key = array_search($needle, $array);
if ($key !== false) {
    unset($array[$key]);
}

4
এই উত্তরটি কোনও উপাদান মুছার জন্য, যখন আপনি মান জানেন তবে কীটি নয় তা পরিষ্কার করে বলা উচিত। দ্রষ্টব্য যে এটি কেবলমাত্র মানের প্রথম FIRST টি মুছে দেয়; এটি সব একটি মান সংবেদনশীল একজন, ব্যবহার array_keys
ToolmakerSteve


65

আপনার যদি এমন একটি সংখ্যামূলক সূচকযুক্ত অ্যারে থাকে যেখানে সমস্ত মান পৃথক হয় (বা এগুলি অনন্য but

$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 এর আকারের কল দ্বারা যাচাই করা যেতে পারে।


64

এছাড়াও, একটি নামকরণ উপাদান জন্য:

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

দেখে মনে হচ্ছে আপনি স্ট্রিং দ্বারা সূচিযুক্ত অ্যারে উপাদানগুলি আনসেট করতে পারবেন না ("মারাত্মক ত্রুটি উত্পন্ন করে: স্ট্রিং অফসেটগুলি আনসেট করতে পারবেন না")। আমি মনে করি না এটি সর্বদা ক্ষেত্রে ছিল তবে অবশ্যই পিএইচপি 5.3.10 এবং সম্ভবত পূর্ববর্তী হিসাবে
carpii

6
@ কারপিআই পিএইচপি একটি মিশুক অ্যারে থেকে উপাদানগুলি আনসেট করতে পারে। মারাত্মক ত্রুটি ঘটে যখন আপনি অ্যারের পরিবর্তে স্ট্রিংটিতে আনসেট ($ var ['কী']) ব্যবহার করার চেষ্টা করেন উদাহরণস্বরূপ: $ অ্যারে = অ্যারে ('পরীক্ষা' => 'মান', 'অন্য' => ' মান ',); সেট না ($ অ্যারে [ 'পরীক্ষা']); // প্রত্যাশিত $ অ্যারে = 'পরীক্ষা' হিসাবে অ্যারে থেকে "পরীক্ষা" উপাদানটি সরান; সেট না ($ অ্যারে [ 'পরীক্ষা']); // "মারাত্মক ত্রুটি: প্রত্যাশা অনুযায়ী স্ট্রিং অফসেটগুলি আনসেট করতে পারে না"
জিম্বো

এখানে আপনার অবশ্যই মূল নামটি অবশ্যই জানা উচিত, এটি আরও ভাল: stackoverflow.com/a/52826684/1407491
নবী KAZ

33

একটি অ্যারের একক উপাদান ধ্বংস করুন

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

1
array_shiftপুনরায় সূচক যদি এটা পূর্ণসংখ্যা কী আইটেম, তাই এটা খারাপ, তাই আপনি এই ব্যবহার করতে পারেন: stackoverflow.com/a/52826684/1407491
নবীর Kaz

33
<?php
    $stack = ["fruit1", "fruit2", "fruit3", "fruit4"];
    $fruit = array_shift($stack);
    print_r($stack);

    echo $fruit;
?>

আউটপুট:

[
    [0] => fruit2
    [1] => fruit3
    [2] => fruit4
]

fruit1

14
মনে রাখবেন যে array_shiftঅ্যারেতে কেবল প্রথম উপাদানটি মুছতে পারে। একইভাবে array_popঅ্যারের শেষ উপাদানটি মুছতে ব্যবহার করুন ।
জসির

1
উত্তরটি কেবলমাত্র অ্যারের প্রথম উপাদানটির জন্য প্রযোজ্য এবং সাধারণ প্রশ্নের উত্তর দেয় না।
sweisgerber.dev

@ সেবুওয়েজারবার আপনি ঠিক বলেছেন তবে আমি এটি ভুল উত্তর বলে মনে করি না এবং এই উত্তরগুলি হ্রাস করতে হবে। প্রশ্ন একটি অবস্থান মুছে ফেলা হয় কোন অবস্থানের উল্লেখ নেই।
সৌরভ চন্দ্র প্যাটেল

27

কোনও অনুসন্ধান না করা এড়াতে যে কেউ এর সাথে খেলতে পারে array_diff:

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

এই ক্ষেত্রে কাউকে চাবিটি অনুসন্ধান / ব্যবহার করতে হবে না।


21

আপনার যদি অ্যারেতে একাধিক মান মুছে ফেলতে হয় এবং সেই অ্যারেতে প্রবেশকারীগুলি [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']]

20

সহযোগী অ্যারে

সহযোগী অ্যারেগুলির জন্য, ব্যবহার করুন 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)

19

যদি আপনাকে কোনও এসোসিয়েটিভ অ্যারে থেকে একাধিক উপাদান সরানোর দরকার হয় তবে আপনি অ্যারে_ডিফ_কি () ব্যবহার করতে পারেন (এখানে অ্যারে_ফ্লিপ () ব্যবহার করুন ):

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

কেন এত আন্ডাররেটেড হয়?
Fr0zenFyr

19

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


12

যদি সূচকটি নির্দিষ্ট করা থাকে:

$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()স্বয়ংক্রিয়ভাবে অ্যারের প্রথম উপাদান যা আমরা কি চাই না মুছে ফেলবে


1
মানটি না পাওয়া গেলে এটি প্রথম উপাদানটি সরিয়ে ফেলবে। আনসেটের জন্য একটি পরীক্ষায় যুক্ত করুন: যদি ($ সূচক! == মিথ্যা) আনসেট করা ($ আরআর [$ সূচক]);
MyRealNameIsBlaze

@ মাইআরয়েলনামআইএসব্লাইজ আপনাকে ধন্যবাদ, স্থির
আহমদ

9

সলিউশন:

  1. একটি উপাদান মুছতে, আনসেট () ব্যবহার করুন :
unset($array[3]);
unset($array['foo']);
  1. একাধিক অবিচ্ছিন্ন উপাদানগুলি মুছতে, আনসেট () ব্যবহার করুন :
unset($array[3], $array[5]);
unset($array['foo'], $array['bar']);
  1. একাধিক স্বতন্ত্র উপাদানগুলি মুছতে, অ্যারে_স্প্লাইস () ব্যবহার করুন :
array_splice($array, $offset, $length);

অারোও ব্যাখ্যা:

এই ফাংশনগুলি ব্যবহার করে পিএইচপি থেকে এই উপাদানগুলির সমস্ত উল্লেখ সরিয়ে দেয়। আপনি যদি অ্যারেতে কী রাখতে চান তবে একটি শূন্য মান সহ, খালি স্ট্রিংটি উপাদানটিকে বরাদ্দ করুন:

$array[3] = $array['foo'] = '';

সিনট্যাক্স ছাড়াও আনসেট () ব্যবহার করে এবং উপাদানটিকে '' নির্ধারণের মধ্যে যৌক্তিক পার্থক্য রয়েছে । প্রথম বলেThis doesn't exist anymore, দ্বিতীয়টি বলেThis still exists, but its value is the empty string.

যদি আপনি সংখ্যার সাথে কাজ করে থাকেন তবে 0 নির্ধারণ করা আরও ভাল বিকল্প হতে পারে। সুতরাং, যদি কোনও সংস্থা XL1000 স্প্রোকটের মডেলটির উত্পাদন বন্ধ করে দেয় তবে তা তার তালিকা আপডেট করে:

unset($products['XL1000']);

তবে, যদি এটি অস্থায়ীভাবে XL1000 স্প্রোককেটের বাইরে চলে যায় তবে এই সপ্তাহের শেষে উদ্ভিদটি থেকে একটি নতুন চালান পাওয়ার পরিকল্পনা করা হয়েছিল, এটি আরও ভাল:

$products['XL1000'] = 0;

যদি আপনি সেট না করে () কোনও উপাদান , পিএইচপি এই অ্যারেটি সামঞ্জস্য করে যাতে লুপিং এখনও সঠিকভাবে কাজ করে। এটি অনুপস্থিত গর্তগুলি পূরণ করার জন্য অ্যারেটি সংক্ষিপ্ত করে না। আমরা যখন বলি যে সমস্ত অ্যারে সংখ্যাসূচক বলে মনে হয় তখনও এটি অ্যারেটিভ হয় This এখানে একটি উদাহরণ:

// 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

ঘন পূরণে সংখ্যার অ্যারেতে অ্যারেটি সংক্ষিপ্ত করতে, অ্যারে_ভ্যালুগুলি ব্যবহার করুন () :

$animals = array_values($animals);

বিকল্পভাবে, অ্যারে_স্প্লাইস () গর্তগুলি এড়াতে স্বয়ংক্রিয়ভাবে অ্যারেগুলিকে পুনরায় সূচনা করে:

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

যদি আপনি অ্যারেটিকে একটি সারি হিসাবে ব্যবহার করেন এবং এলোমেলো অ্যাক্সেসের অনুমতি দেওয়ার সময় সারি থেকে আইটেমগুলি সরাতে চান তবে এটি কার্যকর। অ্যারে থেকে প্রথম বা শেষ উপাদানটি নিরাপদে অপসারণ করতে যথাক্রমে অ্যারে_শিফ্ট () এবং অ্যারে_পপ () ব্যবহার করুন ।


8

ধরুন আপনার নিম্নলিখিত অ্যারে রয়েছে:

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

মুছতে storage, করুন:

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

এবং আপনি পাবেন:

Array
(
    [user_id] => 193
)

কি জন্য array_filterব্যবহার করা হয়?
ডেভিড

falsy উপাদান মুছে ফেলার জন্য
Tebe থেকে

8

আমি কেবল বলতে চাই যে আমার একটি নির্দিষ্ট অবজেক্ট ছিল যা ভেরিয়েবল অ্যাট্রিবিউটসযুক্ত ছিল (এটি মূলত একটি টেবিলটি ম্যাপিং করছিল এবং আমি টেবিলের কলামগুলি পরিবর্তন করছিলাম, সুতরাং বস্তুর বৈশিষ্ট্যগুলি, টেবিলকে প্রতিফলিত করার সাথে সাথে পৃথক হবে):

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ছিল স্রেফ, সুতরাং কোডগুলি যখন পরিবর্তন করা হবে সেদিকে আমার কোথাও দেখার দরকার নেই, আমি কেবল ক্লাসের শুরুটি দেখছি এবং বৈশিষ্ট্যের তালিকা এবং reflect ক্ষেত্রের অ্যারের সামগ্রীটি নতুনকে প্রতিবিম্বিত করতে পরিবর্তন করব বৈশিষ্ট্যাবলী।


8

ডিফল্ট ফাংশন অনুসরণ করুন:

ঝ)

$Array = array("test1", "test2", "test3", "test3");

unset($Array[2]);

২)

$Array = array("test1", "test2", "test3", "test3");

array_pop($Array);

গ)

$Array = array("test1", "test2", "test3", "test3");

array_splice($Array,1,2);

ঈ)

$Array = array("test1", "test2", "test3", "test3");

array_shift($Array);

7
<?php
    $array = array("your array");
    $array = array_diff($array, ["element you want to delete"]);
?>

ভেরিয়েবলটিতে আপনার অ্যারে তৈরি করুন $arrayএবং তারপরে যেখানে আমি 'উপাদান আপনি মুছতে চান' এমন উপাদান রেখেছিলে আপনি এমন কিছু রেখেছেন: "এ"। এবং আপনি যদি একাধিক আইটেম মুছতে চান তবে: "এ", "বি"।


7

কীটি পেতে অ্যারে_সার্চটি ব্যবহার করুন এবং যদি পাওয়া যায় তবে আনসেট সহ এটি সরিয়ে ফেলুন:

if (($key = array_search('word', $array)) !== false) {
    unset($array[$key]);
}

6

অ্যারে থেকে একাধিক, খণ্ডিত উপাদান আনসেট করুন

যদিও unset()হয়েছে এখানে একথা বলার বেশ কয়েকবার এটা এখনো উল্লেখ্য গত হয়েছে unset()স্বীকার করে ডিলিট একাধিক, এক অভিযানে একটি অ্যারে থেকে noncontiguous উপাদান এটা সহজ উপার্জন একাধিক ভেরিয়েবল:

// Delete multiple, noncontiguous elements from an array
$array = [ 'foo', 'bar', 'baz', 'quz' ];
unset( $array[2], $array[3] );
print_r($array);
// Output: [ 'foo', 'bar' ]

আনসেট () গতিশীল

আনসেট () মুছে ফেলার জন্য কীগুলির একটি অ্যারে গ্রহণ করে না, সুতরাং নীচের কোডটি ব্যর্থ হবে (যদিও এটি অস্থায়ীভাবে () পরিবর্তনশীলভাবে ব্যবহার করা কিছুটা সহজ করে দিয়েছিল)।

$array = range(0,5);
$remove = [1,2];
$array = unset( $remove ); // FAILS: "unexpected 'unset'"
print_r($array);

পরিবর্তে, আনসেট () ফোরচ লুপে গতিশীলভাবে ব্যবহার করা যেতে পারে:

$array = range(0,5);
$remove = [1,2];
foreach ($remove as $k=>$v) {
    unset($array[$v]);
}
print_r($array);
// Output: [ 0, 3, 4, 5 ]

অ্যারে অনুলিপি করে অ্যারে কীগুলি সরান

আরও একটি অভ্যাস রয়েছে যা এখনও উল্লেখ করা হয়নি। কখনও কখনও, নির্দিষ্ট অ্যারে কীগুলি থেকে মুক্তি পাওয়ার সহজ উপায় হ'ল $ অ্যারে 1 কে $ অ্যারে 2 এ অনুলিপি করা।

$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' ]

6

একটি কী এর উপর ভিত্তি করে একটি অ্যারের উপাদান সরান:

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
        )

*/

6

সূচকের ক্রম বজায় রেখে অ্যারের প্রথম আইটেমটি সরিয়ে ফেলার দুটি উপায় এবং আপনি যদি প্রথম আইটেমটির মূল নামটি না জানেন তাও।

সমাধান # 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);

সমাধান # 2

// 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"
}

5

নিম্নলিখিত কোড ব্যবহার করুন:

$arr = array('orange', 'banana', 'apple', 'raspberry');
$result = array_pop($arr);
print_r($result);

4
পিএইচপি 5: কেবল চলমান array_pop($arr)চূড়ান্ত এন্ট্রি সরিয়ে দেয়। কোনও `=` প্রয়োজন নেই।
ক্রিস কে

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

4

অ-পূর্ণসংখ্যা কী সহ মিশ্রিত অ্যারেগুলির জন্য:

কেবল, unset($array[$key]) কাজ করবে।

পূর্ণসংখ্যা কী থাকা অ্যারেগুলির জন্য এবং আপনি যদি কীগুলি বজায় রাখতে চান তবে:

  1. $array = [ 'mango', 'red', 'orange', 'grapes'];

    unset($array[2]);
    $array = array_values($array);
  2. array_splice($array, 2, 1);


2

এটি সাহায্য করতে পারে ...

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

2
$arrayName = array( '1' => 'somevalue',
                    '2' => 'somevalue1',
                    '3' => 'somevalue3',
                  );

print_r($arrayName[1]);
// somevalue
unset($arrayName[1]);

print_r($arrayName);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.