Maison > Questions et réponses > le corps du texte
源数组:
$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' => '',
);
递归方式尝试了半天,依然没有解决,如何转换呢?
迷茫2017-04-10 15:28:31
如果那个空数组也要转换的话自己再分个类就好啦。
<?php
//http://3v4l.org/mdWQX
function transfer( $arr, $prefix=array(), $glue="_" ) {
$res = array();
foreach( $arr as $key => $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 ) );
迷茫2017-04-10 15:28:31
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);
怪我咯2017-04-10 15:28:31
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, ''));