0

まず、私が見つけたものをリストする必要があります

配列要素を削除してから配列のインデックスを再作成する方法は?

PHP再インデックス配列?

私の場合、それらは意味がありませんでした。私はばかげた要求に陥り、方法を見つけることを余儀なくされました。なぜ私がそれをしたいのか私に聞かないでください.

以下の配列があります

$input = array(
          0=>array('a', 'b'=>array('c')),
          1=>array('b', 'c'=>array('d')),
          2=>array('c', 'd'=>array('e')),
        );

すべてのキーを 1 増やしたい、または 1 減らしたい (インデックスに許容できるのは負の int 数値)

これが期待される結果です

//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')),
        );

配列内のすべてのキーを 1ずつ増やす方法は ?

$arr = array_flip(array_map(function($el){ return $el + 1; }, array_flip($arr)));

ただし、単純な配列キーペアでのみ機能します。配列値が文字列または整数ではなく他の配列である場合、例外が発生します

array_flip(): Can only flip STRING and INTEGER values!

私が考えることができるのは、配列を処理して名簿を手動で交換することです。他の回避策がなければ、それが最終的な方法になります。

どんな助けでも大歓迎です!

4

2 に答える 2

1

おそらく最も簡単な方法はforeach、新しい配列を使用して作成することです...次のように:

$new = array();
foreach($arr as $k=>$v) {
    $new[$k+1] = $v; // either increase
    $new[$k-1] = $v; // or decrease
}

元の配列を参照渡しして操作を実行することもできます。

于 2013-08-23T02:30:15.310 に答える