فرض: یک آرایهای از اسم رنگها وجود دارد؛ که مثلا قصد داریم تا رنگ white را از داخل آن حذف کنیم.
قطعه کد اول
کد زیر را در نظر بگیرید:
$colors = ['black', 'red', 'blue', 'white']; $index = array_search('white', $colors); if($index !== false) unset($colors[$index]); print_r($colors);
- به کمک تابع array_search، ایندکس مقدار مورد نظر را بهدست آوردیم. (این کار را توسط یک حلقه نیز میتوان انجام داد)
- اگر مقدار مورد نظر که در اینجا white است، در داخل آرایه وجود داشته باشد، مقدار index برابر false نخواهد بود. بنابراین در صورتی که false نباشد، به کمک تابع unset، آن ایندکس آرایه را حذف نمودیم.
توجه داشته باشید که این کد، در آرایههای عددی و … نیز کار میکند. همچنین اگر داخل آرایه از Key های اختصاصی استفاده شود نیز این روش کار میکند. برای مثال:
$colors = ['color1' => 'black','color2' => 'red', 'color3' => 'blue', 'color4' => 'white']; $key = array_search('white', $colors); if($key !== false) unset($colors[$key]); print_r($colors);
توجه داشته باشید که بههنگام استفاده از unset، خود ایندکسها بدون تغییر باقی میمانند! برای رفع این مشکل، میتوان بهجای unset، از تابع array_splice بهصورت زیر جهت حذف یک ایندکس بهطور کامل از داخل آرایه استفاده کرد:
array_splice($array, $index, 1);
قطعه کد دوم
قطعه کد قبلی، فقط اولین مورد white را حذف میکند؛ چراکه تابع array_search، کلید یا ایندکس اولین مورد را برمیگرداند. اما اگر بخواهیم هرچه white در لیست وجود دارد حذف شود، میتوان بهصورت زیر عمل کرد:
$colors = ['black', 'red', 'blue', 'white', 'white', 'white']; $indexes = array_keys($colors, 'white'); foreach ($indexes as $index) unset($colors[$index]); print_r($colors);
- به کمک تابع array_keys، ایندکسهای مقدار مورد نظر را بهدست آوردیم. (این کار را توسط یک حلقه نیز میتوان انجام داد)
- یک حلقهی foreach به ازای هر ایندکس نوشته و آن را از داخل آرایه حذف نمودیم.
نظرات ثبت شده بدون دیدگاه