2012-02-03 4 views
2

可能性の重複:
array_splice() for associative arrays
How to add an array value to the middle of an associative array?PHPのAssoc配列の特定の連想キーの後に新しい[key] => [value]のペアを追加するには?

がどのように私はPHPで連想配列内の特定の連想キーの後に新しい[key] => [value]ペアを追加することができますか?それは[apple]キーの後で[banana]キーの前に表示されるように、私は$fruits[plum] => 2を追加することができますどのように

array { 
    [apple] => 1 
    [banana] => 3 
    [orange] => 4 
} 

例えば、我々は、配列が$fruitsと呼ばれているとしましょうか?

ありがとうございました。

+0

この例では、値を昇順にソートして、インデックスを管理しています(別名asort)。 http://us.php.net/asort – MetalFrog

答えて

3

array_splice()を使用して配列を2つに分割し、次に配列をarray_merge()で作り直す必要があります。ちょっと立ち上がりました。あなたは果物を使用するアップルのシリアル番号を確認するなどのためにそこに名前 に基づいて果物のhttp://codepad.org/gGm5C1od

<?php 
    $orig = array(
     "apple" => 1, 
     "banana" => 3, 
     "orange" => 4, 
    ); 

    $orig = InsertKeyValuePair($orig, "plum", 2, 1); 
    var_dump($orig); 

    function InsertKeyValuePair($arr, $key, $val, $index){ 
     $arrayEnd = array_splice($arr, $index); 
     $arrayStart = array_splice($arr, 0, $index); 
     return (array_merge($arrayStart, array($key=>$val), $arrayEnd)); 
    } 

?> 
+0

@DaveRandom:その編集の良いキャッチ。ありがとう。 – Dutchie432

+0

Sandeepan Nathによる無効な編集:/ ** * @descは、連想配列の中央に配列値を追加します。 * @param配列$ arr - 挿入する配列 * @param文字列$ key - 新しく挿入された要素に与えられる * @param mixed $ val - 新しく挿入された要素の値 * @param int $ index - シーケンス番号?新しい配列値を元の配列に挿入する$ arr */' – StuartLC

+0

編集に何が間違っていましたか? @nonnbについて説明してください。文章は改善することができるかもしれません... –

0

あなたの究極の目標は、シリアル番号(または何か他のもの)であれば[「りんご」:

ライブサンプル]配列内の特定の要素が存在する場合、それは問題ではありませんし、あなたが本当にそれを独自の方法をしたいならば、あなたはarray_spliceを使用することができます()関数 はここ http://www.ferolen.com/blog/insert-into-add-element-to-array-at-specific-position-php/

0

と仮定すると、連想キー付きのアレイが持っている素敵なチュートリアルです予測可能なデールは良いデザインではありません。強制的な注文が必要な場合は、それをあなたの設計に委ねるべきです。たとえば、配列を注文番号でキー入力し、フルーツ名でデータを取得するカスタム関数を作成します。

キーが自然な順序であると仮定し続けると、ある日、予想通りの順序でシナリオが実行され、機能が失われます。

関連する問題