PHP - get a specific element from each under an array without a loop

There is a way in php to get an element from each auxiliary array without having to use a loop in terms of efficiency.

Say the following array:

$array = array( array( 'element1' => a, 'element2' => b ), array( 'element1' => c, 'element2' => d ) ); 

I would like all the values ​​of 'element1' from the $ array

+4
source share
4 answers

There are many different functions that can work with arrays for you, depending on the desired result ...

 $array = array( array( 'element1' => 'a', 'element2' => 'b' ), array( 'element1' => 'c', 'element2' => 'd' ) ); // array of element1s : array('a', 'c') $element1a = array_map(function($item) { return $item['element1']; }, $array); // string of element1s : 'ac' $element1s = array_reduce($array, function($value, $item) { return $value . $item['element1']; }, ''); // echo element1s : echo 'ac' array_walk($array, function($item) { echo $item['element1']; }); // alter array : $array becomes array('a', 'c') array_walk($array, function(&$item) { $item = $item['element1']; }); 

Useful documentation links:

+4
source

You can use array_map .

Try using the code below ...

 $arr = $array = array( array( 'element1' => a, 'element2' => b ), array( 'element1' => c, 'element2' => d ) ); print_r(array_map("getFunc", $arr)); function getFunc($a) { return $a['element1']; } 

See Codepad .

But I think array_map will also use a loop inside.

+2
source

If you are using PHP 5.5 (beta 4 is currently available), then

 $element1List = array_column($array, 'element1'); 

should give $ element1List as a simple array of only element1 values ​​for each element in $ array

 $array = array( array( 'element1' => a, 'element2' => b ), array( 'element1' => c, 'element2' => d ) ); $element1List = array_column($array, 'element1'); print_r($element1List); 

gives

 Array ( [0] => a [1] => c ) 
+2
source

Without a loop? Recursion!

 $array = array( array( 'element1' => 'a', 'element2' => 'b' ), array( 'element1' => 'c', 'element2' => 'd' ) ); function getKey($array,$key,$new = array()){ $count = count($array); $new[] = $array[0][$key]; array_shift($array); if($count==1) return $new; return getKey($array,$key,$new); } print_R(getKey($array,'element1')); 

As I understand from Wikipedia, Recursion is not a cycle.

0
source

All Articles