PHP array mapping PHP array mapping arrays arrays

PHP array mapping


No, there is no faster way than your implemented code. All other methods will be slower due to the overhead of a function call. For a small array the difference will be trivial, but for a large one (100 members or so, depending on implementation), the difference can be huge...

You could array_map it, but I'd stick with the raw PHP you posted above... It's easier to maintain and IMHO more readable...

After all, tell me which at a glance tells you what it does more:

$results = array();foreach ($array as $value) {    $results[] = $value['title'];}

vs

$results = array_map(function($element) {        return $element['title'];    },    $array);

Or:

$callback = function($element) {    return $element['title'];}$results = array_map($callback, $array);

Personally, the first does it for me the best. It's immediately obvious without knowing anything what it's doing. The others require knowledge of array_map semantics to understand. Couple that with the fact that array_map is slower, and it's a double win for foreach.

Code should only be as elegant as necessary. It should be readable above all else...


Sure, use array_map:

function getLabelFromMethod($method) {   return $method['label'];}$labels = array_map('getLabelFromMethod', $methods);

If you are on PHP 5.3+, you can also use a lambda function:

$labels = array_map(function($m) {   return $m['label'];}, $methods);


As of PHP 5.5+, this is exactly what array_column() does:

$methodsLabel = array_column($methods, 'label');

http://php.net/manual/function.array-column.php


3v4l example: https://3v4l.org/ZabAb