Mocht je uit een database meerdere items ophalen dan zal een array er bijvoorbeeld zo uit zien:
Array ( [0] => Array ( [name] => Piet [age] => 20 ) [1] => Array ( [name] => Klaas [age] => 29 ) [2] => Array ( [name] => Jan [age] => 46 ) [3] => Array ( [name] => Peter [age] => 18 ) )
Maar mocht je nu één item ophalen, bijvoorbeeld enkel de namen:
Array ( [0] => Array ( [name] => Piet ) [1] => Array ( [name] => Klaas ) [2] => Array ( [name] => Jan ) [3] => Array ( [name] => Peter ) )
Dan heeft het multidimensionale geen zin meer natuurlijk en kan de array er beter zo uit zien:
Array ( [0] => Piet [1] => Klaas [2] => Jan [3] => Peter )
Om dat voor elkaar te krijgen kunnen we array_map gebruiken:
function naam_ophalen($array) { return $array['name']; } $de_nieuwe_array = array_map("naam_ophalen", $de_array);
Mocht je op PHP 5.3 of hoger draaien kunnen we de zogeheten “anonymous functions” gebruiken, ofwel een anonieme cq naamloze functie. Hiermee kunnen we alles op één regel zetten:
$de_nieuwe_array = array_map(function($array) { return $array['name']; }, $de_array);
Wanneer dit gebruikt wordt is bijvoorbeeld als je de array in implode wilt stoppen. Om daar een leuk voorbeeld bij te geven:
// De multidimensionale array met namen $de_array = [['name' => 'Piet'],['name' => 'Klaas'],['name' => 'Jan'],['name' => 'Peter']]; // De array omzetten naar een enkele array $de_nieuwe_array = array_map(function($array) { return $array['name']; }, $de_array); // De namen scheiden door komma's $namen = implode(', ',$de_nieuwe_array); // De laatste komma vervangen door "en" $namen = preg_replace('/(.*),/','$1 en',$namen); // Het resultaat laten zien echo $namen;
Het resultaat: Piet, Klaas, Jan en Peter