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