【发布时间】:2013-08-23 02:21:16
【问题描述】:
首先,我必须列出我发现的内容
How to Remove Array Element and Then Re-Index Array?
在我的情况下它们没有意义。我陷入了荒谬的要求,我不得不强迫自己寻找出路,那么请不要问我为什么要这样做。
我有下面的数组
$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!
我能想到的是手动处理数组以交换名册,如果没有任何其他解决方法,这将是最后的方法。
感谢任何帮助!
【问题讨论】:
-
所以您要做的就是重新索引键?
-
@aztechy 你的问题并不积极,因为我已经在我的问题上谈到了它。在大多数情况下,我说这是我遇到的最荒谬的要求,我尽量避免这样做。要求很复杂,我只是说有问题。
-
这只是一个没有恶意的问题,旨在进一步明确解决方案。它看起来就像更新一级索引一样简单,为什么要实现它,正如你所说的那样。无论如何,长话短说,这个问题没有任何伤害。