سلام دوستان. یاد می‌گیریم که چطوری یک عنصر خاص رو از آرایه پاک کنیم. برای این کار ۲ روش وجود داره:

 

روش اول: استفاده از تابع array_splice

$letters = ['a', 'b', 'c', 'd', 'e'];

array_splice($letters, 2 , 1);

print_r($letters); 

/*
Array
(
    [0] => a
    [1] => b
    [2] => d
    [3] => e
)
*/

آرگومان دوم این تابع، شماره ایندکس عنصر مورد نظر ما برای حذف هست. آرگومان سوم مشخص می‌کنه که چه تعداد عنصر از آرایه باید بعد از شماره ایندکس مشخص شده حذف بشه.

 

روش دوم: استفاده از تابع unset

$letters = ['a', 'b', 'c', 'd', 'e'];

unset($letters[0]);

print_r($letters);

/*
Array
(
    [0] => a
    [1] => b
    [3] => d
    [4] => e
)
*/

 

 

نکته ۱: هنگام استفاده از تابع array_splice باید دقت کنیم که این تابع آرایه اصلی رو تغییر میده. به بیان فنی‌تر، آرایه با Reference به این تابع پاس داده میشه.

نکته ۲: قبل استفاده از توابع array_splice و unset باید شماره ایندکس عنصر مورد نظرمون رو داشته باشیم. اگه شماره ایندکس عنصر مورد نظر رو نداریم، می‌تونیم اون رو با تابع array_search بدست بیاریم:

$letters = ['a', 'b', 'c', 'd', 'e'];

$index = array_search('c', $letters);
array_splice($letters, $index , 1);

نکته ۳: همونطور که دیدیم، بعد از حذف توسط تابع array_splice، شماره ایندکس‌های آرایه مورد نظر دوباره مرتب شد. به قول معروف reindex شد. اما چنین اتفاقی هنگام استفاده از تابع unset رخ نداد. برای مرتب‌سازی ایندکس‌های آرایه، از تابع array_values استفاده می‌کنیم:

$letters = ['a', 'b', 'c', 'd', 'e'];

unset($letters[2]);
$reIndexedLetters = array_values($letters);

print_r($reIndexedLetters);

/*
Array
(
    [0] => a
    [1] => b
    [2] => d
    [3] => e
)
*/

 

روزتون خوش 😉

منبع: