我想重新排列一个简单的多维数组。
Array
(
[pieces] => Array
(
[0] => 2
[1] => 9
)
[start] => Array
(
[0] => 0001
[1] => 9901
)
[end] => Array
(
[0] => 0002
[1] => 9909
)
[group] => Array
(
[0] => 0001-0100
[1] => 9901-9999
)
)
到
Array
(
[tokens] => Array
(
[0] => Array
(
[start] => 0001
[end] => 0002
[pieces] => 2
[group] => 0100
)
[1] => Array
(
[start] => 9901
[end] => 9909
[pieces] => 9
[group] => 9901-9999
)
)
)
我已经尝试过类似的操作:
$keys = array_keys($array);
foreach ($keys as $key => $val) {
foreach ($array as $k => $v){
foreach($array[$v] as $tk => $tv){
if($val == $k){
$new['tokens'][][$val] = $tv;
}
}
}
}
数字是我从表单中获得的一组令牌,
请谁能解释我做错了什么? 我用不同的代码工作了几个小时(我知道解决方案很简单),但我有点困惑:/
非常感谢您!
BR KK
答案 0 :(得分:3)
第四只鸟的解决方案很严格,因为它:
无论如何,以下内容都将起作用:
foreach( $array as $y => $inner ) {
foreach( $inner as $x => $value ) {
$new['tokens'][$x][$y] = $value;
}
}
编辑:我认为有必要保留他的已删除答案中发布的代码对第四只鸟的麻烦的解释:
您正在尝试索引
$array[$v]
,但在$v
的情况下是一个 子数组。根据{{3}}:数组和对象不能用作键。这样做会导致 警告:偏移量类型非法。
在开发代码时,请确保将array
docs调高到E_ALL
,以便可以看到指示当前和/或将来问题的非关键消息。