首先,我必须列出我发现的内容
在我的情况下,它们没有意义。我陷入了荒谬的要求,我已经强迫自己寻找出路,那么请不要问我为什么要这样做。
我有以下数组
$input = array(
0=>array('a', 'b'=>array('c')),
1=>array('b', 'c'=>array('d')),
2=>array('c', 'd'=>array('e')),
);
我想将所有键增加 1 或减少 1(可接受的索引是负整数)
这是预期的结果
//after increased by 1
$input = array(
1=>array('a', 'b'=>array('c')),
2=>array('b', 'c'=>array('d')),
3=>array('c', 'd'=>array('e')),
);
或者
//after decreased by 1
$input = array(
-1=>array('a', 'b'=>array('c')),
0=>array('b', 'c'=>array('d')),
1=>array('c', 'd'=>array('e')),
);
我从raina77ow得到的 壁橱答案How to increase by 1 all keys in an array?
$arr = array_flip(array_map(function($el){ return $el + 1; }, array_flip($arr)));
但它只适用于简单的数组键对,如果数组值是其他数组而不是字符串或整数,则会引发异常
array_flip(): Can only flip STRING and INTEGER values!
我能想到的事情是手动处理数组以交换名册,如果没有任何其他解决方法,这将是最后的方法。
任何帮助表示赞赏!