PHP
Programming
Array Manipulation
PHP Arrays
Coding Solutions

PHP array delete by value (not key)

Data Structures & Algorithms practice on Codemia

Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.

Practice algorithms

In PHP, arrays are crucial data structures that allow developers to store multiple elements under a single variable. While managing arrays, a common requirement is to delete an element based on its value rather than its key. This task, however, does not have a built-in PHP function like unset(), which works directly with keys. Thus, deleting an array element by value requires a workaround involving two primary steps: finding the key associated with the value and then removing the element using the unset() function. Here, we’ll explore how to handle array deletion by value effectively.

Understanding Array Structure in PHP

PHP arrays can be indexed or associative. Indexed arrays use numeric indexes, while associative arrays use named keys. Here's a brief example of each:

  • Indexed Array: array(0 => 'Apple', 1 => 'Banana', 2 => 'Cherry')
  • Associative Array: array('first' => 'Apple', 'second' => 'Banana', 'third' => 'Cherry')

Deleting Elements by Value

To delete elements by value, you first need to determine the key(s) associated with that value. Then, you can use the unset() function to remove the element. Here is a step-by-step approach:

Step 1: Finding the Key

You can find a key using the array_search() function for a single instance or loop through the array for multiple occurrences. Here’s how you can implement both:

Single Occurrence:

php
1$array = ["Apple", "Banana", "Cherry", "Banana"];
2$valueToDelete = "Banana";
3
4$key = array_search($valueToDelete, $array);
5if ($key !== false) {
6    unset($array[$key]);
7}

Multiple Occurrences:

php
1$array = ["Apple", "Banana", "Cherry", "Banana"];
2$valueToDelete = "Banana";
3
4foreach ($array as $key => $value) {
5    if ($value === $valueToDelete) {
6        unset($array[$key]);
7    }
8}

Step 2: Using unset() Function

Once the key(s) associated with the value are identified, the unset() function can be used to remove the element:

php
unset($array[$key]);

If there are multiple keys, as is common with duplicate values, they need to be unset within a loop.

Special Considerations

  • Preserving Keys: When deleting elements, particularly in associative arrays, keys are not reindexed. If you need reindexed keys after deletion, especially in indexed arrays, use array_values() to reset them:
php
$array = array_values($array);
  • Performance: When dealing with large arrays, consider the performance implications of searching and deleting operations, especially in multiple occurrence scenarios.
  • Strict Comparison: array_search() uses loose comparison by default (==). For strict comparison (===), pass true as the third argument to array_search().

Summary Table

FunctionPurposeUsages Example
array_search()Search array for given value and return the first corresponding keyarray_search('Banana', $array)
unset()Remove element from array using keyunset($array[$key])
array_values()Re-index numeric array keys$array = array_values($array)

Additional Tips

  • Handling Nested Arrays: Deleting values in nested arrays requires recursive function implementation or a well-thought-out iteration mechanism.
  • Alternative Methods: Libraries and frameworks often provide their mechanisms or utilities to manipulate arrays, which might be more efficient or easier than vanilla PHP code for specific scenarios.

By custom-designed functions or extensions specific to frameworks like Laravel's collections, developers can optimize and simplify array manipulations, including deleting elements by specific values.

In conclusion, though PHP does not provide a direct function to delete array elements by value, by creatively using available functions like array_search() and unset(), developers can effectively manage array data as required. SQL-like operations on arrays, including deletion by value, highlight the flexible and dynamic nature of PHP as a language suited for web development.


Related reading
Course
Intermediate
27 lessons
15 hours
DSA Fundamentals

Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.

View the course
Track what you have practised

A free account saves your progress, solutions and study plan across every problem on Codemia.

Data Structures & Algorithms practice on Codemia

Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.

Practice algorithms

All Rights Reserved.