2

私は配列を持っています:

$a = array('color' => 'green', 'format' => 'text', 'link_url');

そして別の:

$b = array('zero', 'one', 'two', 'three', 'test' => 'ok', 'four');

そしてarray_merge()で私はこのような配列を持っています:

Array
(
    [color] => green
    [format] => text
    [0] => link_url
    [1] => zero
    [2] => one
    [3] => two
    [4] => three
    [test] => ok
    [5] => four
)

PHPが配列キーを上記のように設定するのはなぜですか?なぜこれが好きではないのですか?

Array
(
    [color] => green
    [format] => text
    [2] => link_url
    [3] => zero
    [4] => one
    [5] => two
    [6] => three
    [test] => ok
    [8] => four
)
4

5 に答える 5

3

これは、数値IDがインデックスの表示とは別にカウントされるためです。文字列インデックスには番号がなく、カウントされません。

于 2013-03-13T12:19:10.077 に答える
1

元の配列定義については、 PHPマニュアルから引用します。

キーはオプションです。指定されていない場合、PHPは以前に使用された最大の整数キーの増分を使用します。

そしてarray_merge()のドキュメントから:

入力配列に同じ文字列キーがある場合、そのキーの新しい値が前の値を上書きします。ただし、配列に数値キーが含まれている場合、後の値は元の値を上書きしませんが、追加されます。

数値キーを使用した入力配列の値は、結果配列のゼロから始まる増分キーで番号が付け直されます。

したがって、それはすべて非常に明確に文書化されています

于 2013-03-13T12:18:34.267 に答える
0

ドキュメントを確認してください:

入力配列に同じ文字列キーがある場合、そのキーの新しい値が前の値を上書きします。ただし、配列に数値キーが含まれている場合、後の値は元の値を上書きしませんが、追加されます。

数値キーを使用した入力配列の値は、結果配列のゼロから始まる増分キーで番号が付け直されます。

参照:http ://www.php.net/manual/en/function.array-merge.php

于 2013-03-13T12:21:50.680 に答える
0

さて、元の配列を見ると、明確になっているはずです。

array(3) {
  ["color"]=>
  string(5) "green"
  ["format"]=>
  string(4) "text"
  [0]=>
  string(8) "link_url"
}
于 2013-03-13T12:18:41.933 に答える
0

存在しない非数値キーとの順序付けまたは一致を想定しているようです。

数字キーには順序があり、これは新しい値で表されます。文字列キーはその順序付けシステムの一部ではないため、これらの新しい数値には影響しません。

これは単にそれがそうである方法であり、それは完全に理にかなっています。

于 2013-03-13T12:18:48.370 に答える