3

PHPの非連想配列の特定のインデックスの後に新しい要素を挿入したいと思います。これは私がこれまでに行ったことです:

public function insertAfter($newElement, $key)
{
    // Get index of given element
    $index = array_search($key, array_keys($array));

    $temp  = array_slice($array, $index + 1, null, TRUE);
    $temp2 = array_slice($array, sizeof($array) - $index, null, TRUE);

    // Insert new element into the array
    $array = array_merge($temp, array($newElement), $temp2);
}

しかし、それは私が望むことを実際には行いません...それは配列でいくつかの奇妙なことをします。手伝ってくれる?

4

2 に答える 2

4
$array = array_slice($array, 0, $index) 
       + array($newElement)
       + array_slice($array, $index, count($array) - 1);
于 2013-02-26T21:53:34.130 に答える
1

array_slice の 2 番目の引数は、サブ配列が開始される配列内のオフセットである必要があります。配列を 2 つに分割しようとしている場合は、最初のサブ配列を offset から開始して0size$indexにし、2 番目のサブ配列を offset から開始して$index+1size にする必要がありますsizeof(array) - index。ただし、コメントを繰り返しarray_spliceますが、アプリケーションにより適しています。

于 2013-02-26T21:49:48.617 に答える