Een simpel truukje om zoals de titel al aangeeft, een item bij zijn waarde te verwijderen uit een array. Daarbij eerst even een voorbeeld array:
$array = ['test1','test2','test3','test4'];
Stel we willen nu een item hieruit verwijderen (test3) kunnen we dit doen middels unset:
unset($array[2]);
Maar, dan moeten we wel de key weten! In dit geval is 2 gelijk aan “test3”, gezien er geteld wordt vanaf 0. Dat kunnen we zien als we de array dumpen middels var_dump:
array(4) {
[0]=>
string(5) "test1"
[1]=>
string(5) "test2"
[2]=>
string(5) "test3"
[3]=>
string(5) "test4"
}
Maar als we de key niet weten? Dan kunnen we door de array lo(o)pen zoals het onderstaande voorbeeld. Andere opties zijn met array_search of array_keys aan de gang.
foreach($array as $key => $value)
{
if($value == 'test3')
{
unset($array[$key]);
}
}
Maar wat ik het makkelijkste vindt én op één regel past is de methode met array_diff!
$array = array_diff($array, array('test3'));
Wat nu wel het geval is; het item is verwijderd waardoor de “keys” niet veranderd zijn:
array(3) {
[0]=>
string(5) "test1"
[1]=>
string(5) "test2"
[3]=>
string(5) "test4"
}
Door om de array_diff ook array_values te zetten los je dit op:
$array = array_values(array_diff($array, array('test3')));
Met als resultaat dat de “keys” opeenvolgend zijn:
array(3) {
[0]=>
string(5) "test1"
[1]=>
string(5) "test2"
[2]=>
string(5) "test4"
}