PHP array delete by value (not key)

I have a PHP array as follows:

$messages = [312, 401, 1599, 3, ...];

I want to delete the element containing the value $del_val (for example, $del_val=401 ), but I don’t know its key. This might help: each value can only be there once .

I’m looking for the simplest function to perform this task please.

1 Like

Using array_search() and unset , try the following:

if (($key = array_search($del_val, $messages)) !== false) {
    unset($messages[$key]);
}

array_search() returns the key of the element it finds, which can be used to remove that element from the original array using unset() . It will return FALSE on failure, however it can return a false-y value on success (your key may be 0 for example), which is why the strict comparison !== operator is used.

The if() statement will check whether array_search() returned a value, and will only perform an action if it did.

Refer: https://stackoverflow.com/questions/7225070/php-array-delete-by-value-not-key