3v4l.org

run code in 300+ PHP versions simultaneously
<?php /* Groups passed arrays in an array of associative arrays with same keys and values * * @example $array1 = array( array('a'=>'val1'),array('a'=>'val2') ); * $array2 = array( array('b'=>'val3'),array('b'=>'val4') ); * $array3 = array( array('c'=>'val5'),array(),array('c'=>'val6') ); * multiArrayCombine( $array1, $array2, $array3 ); * return: array * ( * 0 => array('a'=>'val1','b'=>'val3','c'=>'val5'), * 1 => array('a'=>'val2','b'=>'val4'), * 2 => array('c'=>'val6') * ) * * @param array $array1[, $array2[, $array3...]] * * @option const T_OBJECT_CAST cast returned assoc arrays as stdObject * * @return array */ function multiArrayCombine() { /* Get all passed parameters and T_OBJECT_CAST option: */ $args = func_get_args(); $asObject = ( T_OBJECT_CAST == end($args) ); if( $asObject ) array_pop( $args ); $retval = array(); # Init array to be returned /* Retrieve highest passed arrays key: */ $max = 0; foreach( $args as $array ) $max = max( $max, max( array_keys($array) ) ); /* Loop for each arrays key: */ for( $i=0; $i<=$max; $i++ ) { /* Init associative array to add: */ $add = array(); /* Process actual key ($i) of each passed array: */ foreach( $args as $array ) { /* If the key ($i) exists, add each passed array: */ if( isset($array[$i]) AND is_array($array[$i]) ) { foreach( $array[$i] as $key => $val ) { $add[$key] = $val; } } } /* Add the obtained associative array to return array */ if( $asObject ) $retval[] = (object) $add; else $retval[] = $add; } return $retval; } $array1 = array( array('accordion_title'=>'Title 1'),array('accordion_title'=>'Title 2') ); $array2 = array( array('accordion_content'=>'Content 1'),array('accordion_content'=>'Content 2') ); $array3 = array( array('accordion_date'=>'Date 1'),array(),array('accordion_date'=>'Date 3') ); print_r( multiArrayCombine( $array1, $array2, $array3 ) );
Output for git.master, git.master_jit, rfc.property-hooks
Array ( [0] => Array ( [accordion_title] => Title 1 [accordion_content] => Content 1 [accordion_date] => Date 1 ) [1] => Array ( [accordion_title] => Title 2 [accordion_content] => Content 2 ) [2] => Array ( [accordion_date] => Date 3 ) )

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
30.77 ms | 406 KiB | 5 Q