源數組:
$attributes = array( 'Users' => array( 'Name' => 'Name', ), 'Address' => 'Address', 'Tags' => array( 0 => array( 'Key' => 'Key', 'Value' => 'Value', ), 1 => array( 'Key' => 'Key', ), 2 => array( ) ),);
希望轉換為如下數組:
$result = array( 'Users_Name' => 'Name', 'Address' => 'Address', 'Tags_0_Key' => 'Key', 'Tags_0_Value' => 'Value', 'Tags_1_Key' => 'Key', // 'Tags_2' => '',);
遞迴方式嘗試了半天,依然沒有解決,如何轉換呢?
回複內容:
源數組:
$attributes = array( 'Users' => array( 'Name' => 'Name', ), 'Address' => 'Address', 'Tags' => array( 0 => array( 'Key' => 'Key', 'Value' => 'Value', ), 1 => array( 'Key' => 'Key', ), 2 => array( ) ),);
希望轉換為如下數組:
$result = array( 'Users_Name' => 'Name', 'Address' => 'Address', 'Tags_0_Key' => 'Key', 'Tags_0_Value' => 'Value', 'Tags_1_Key' => 'Key', // 'Tags_2' => '',);
遞迴方式嘗試了半天,依然沒有解決,如何轉換呢?
如果那個空數組也要轉換的話自己再分個類就好啦。
$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, ''));