【发布时间】:2014-07-17 20:45:24
【问题描述】:
我有一个结构像这样的数组
- foo = 这个例子中我们不关心的东西
- foo1_value
- foo1_label
- foo1_unit
- foo2_value
- foo3_label
- foo3_value
你能想出一个快速的方法让它看起来像这样吗?
- 富
- foo1
- 价值
- 标签
- 单位
- foo2
- 价值
- foo3
- 价值
- 标签
我实际上正在尝试这样的事情:
array_walk($array, function($val, $key) use(&$nice_array) {
$match = false;
preg_match("/_label|_value|_unit|_libelle/", $key, $match);
if (count($match)) {
list($name, $subName) = explode('_', $key);
$nice_array[$name][$subName] = $val;
} else {
$nice_array[$key] = $val;
}
});
echo '<pre>';
print_r($nice_array);
echo '</pre>';
这是有效的,我只需要反思 foo_foo_label 的事情,一切都很好
【问题讨论】:
-
date和date_modif怎么样? -
如果这不会变得过于递归,那么可能值得查看
preg_grep的 PHP 文档中的 cmets - 特别是在匹配键时:php.net/manual/en/function.preg-grep.php -
array_walk不允许您添加、取消设置或更改数组的顺序 -
@danjam 这很正常。但是由于取消设置所有值都很好,所以我坚持如果...而不是:(