0

私のタイトルでごめんなさい。私はこれを尋ねる方法がわかりません。話を短くするために、配列の特定の部分を置き換えるだけです。この配列があるとしましょう:

Array
(
      [0] => Array
        (
            [restaurant_id] => 1236
            [new_lat] => 76
            [new_long] => 86
            [date_updated] => 2013-11-15 17:20:58
        )

      [1] => Array
        (
            [restaurant_id] => 1247
            [new_lat] => 6
            [new_long] => 5
            [date_updated] => 2013-11-15 17:20:58
        )

      [2] => Array
        (
            [restaurant_id] => 7456
            [new_lat] => 21
            [new_long] => 12
            [date_updated] => 2013-11-15 17:20:58
        )

)

次に、インデックス 2 を次のように置き換える必要があります。

Array(
     [2] => Array
        (
            [restaurant_id] => 1236
            [new_lat] => 2
            [new_long] => 1
            [date_updated] => 2013-11-15 17:20:58
        )
)

既存の restaurant_id があることがわかった場合は、置き換える必要があります。もしあるなら。その行を更新します。新しい配列は追加しません。

アイデアはありますが、これを行う方法がわかりません。私の考えは:

  1. 配列のシリアル化を解除します (私の配列はシリアル化された形式であるため)

  2. ターゲット インデックスを検索します。見つかった場合は、そのインデックスを削除し、新しいインデックスを配列の最後に追加してから、再度シリアル化します。見つからない場合は、配列の末尾にのみ追加してシリアル化します。

インデックスを削除するかどうかはわかりません。インデックスが自動的に移動する場合。つまり、インデックス 2 を削除すると、インデックス 3 はインデックス 2 になり、新しい配列はインデックス 3 になります。

わかりました、それはすべての人です。ありがとう。

4

5 に答える 5

1

そのインデックスを削除する必要はありません。単に上書きするだけです。

  1. シリアライズ解除

  2. ターゲット インデックスを検索します。見つかった場合は、上書きするだけです (削除しないでください)。見つからない場合は、末尾に を追加し[]ます。

上書き:

$my_array[2] = array(
    'restaurant_id' => 1236,
    'new_lat' => 2,
    'new_long' => 1,
    'date_updated' => '2013-11-15 17:20:58'
);

このコードは、インデックス2をこの新しいもので上書きします。前に設定を解除する必要はありません。

于 2013-11-15T09:50:00.777 に答える
0

わかりました、要素を id で設定解除し、次に並べ替えてから、新しい要素を追加します。

    unset($array[2]); // unset number 2
    $array = array_values($array); // resort
    $array[] = $newStuff; // add

幸運を

于 2013-11-15T09:49:47.800 に答える
0

unset 関数を使用すると、インデックスは空のままになります。

たとえば、$array に 0 1 2 3 の 4 つの値がある場合、インデックス 2 の設定を解除すると、インデックス 3 は 3 のままになり、配列への新しい追加はインデックス 4 になります。

次のコードはこれを示しています。

$a = array("zero", "one", "two", "three");
var_dump($a);
unset($a[2]);
var_dump($a);
$a[]="four";
var_dump($a);
于 2013-11-15T09:50:35.560 に答える