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" }