SOURCE array:
$attributes = array( 'Users' => array( 'Name' => 'Name', ), 'Address' => 'Address', 'Tags' => array( 0 => array( 'Key' => 'Key', 'Value' => 'Value', ), 1 => array( 'Key' => 'Key', ), 2 => array( ) ),);
You want to convert to the following array:
$result = array( 'Users_Name' => 'Name', 'Address' => 'Address', 'Tags_0_Key' => 'Key', 'Tags_0_Value' => 'Value', 'Tags_1_Key' => 'Key', // 'Tags_2' => '',);
Recursive way to try a half-day, still no solution, how to convert it?
Reply content:
SOURCE array:
$attributes = array( 'Users' => array( 'Name' => 'Name', ), 'Address' => 'Address', 'Tags' => array( 0 => array( 'Key' => 'Key', 'Value' => 'Value', ), 1 => array( 'Key' => 'Key', ), 2 => array( ) ),);
You want to convert to the following array:
$result = array( 'Users_Name' => 'Name', 'Address' => 'Address', 'Tags_0_Key' => 'Key', 'Tags_0_Value' => 'Value', 'Tags_1_Key' => 'Key', // 'Tags_2' => '',);
Recursive way to try a half-day, still no solution, how to convert it?
It would be nice if the empty array was to be converted.
$val ) { $key = array_merge( $prefix, array($key) ); if( is_array($val) ) $res = array_merge( $res, transfer( $val, $key, $glue ) ); else $res[ implode($glue, $key) ] = $val; } return $res;}$attributes = array( 'Users' => array( 'Name' => 'Name', ), 'Address' => 'Address', 'Tags' => array( 0 => array( 'Key' => 'Key', 'Value' => 'Value', ), 1 => array( 'Key' => 'Key', ), 2 => array( ) ),);var_dump( transfer( $attributes ) );
function t($parent_key, $parent_array, &$data) { foreach ($parent_array as $k => $v) { if (is_array($v)) { t("${parent_key}_${k}", $v, $data); } else { $data[trim("${parent_key}_${k}", '_')] = $v; } }}$data = array();$attributes = array( 'Users' => array( 'Name' => 'Name', ), 'Address' => 'Address', 'Tags' => array( 0 => array( 'Key' => 'Key', 'Value' => 'Value', ), 1 => array( 'Key' => 'Key', ), 2 => array( ) ),);t('', $attributes, $data);print_r($data);
function deal($array, $prekey){ $res = array(); foreach ($array as $key => $val) { if(is_array($val)){ $tmp = deal($val, $prekey.$key."_"); $res = array_merge($tmp, $res); }else{ $res[$prekey.$key] = $val; } } return $res;}print_r(deal($attributes, ''));