2

配列内のキーを手動で宣言するとハッシュと見なされ、自己生成キーの場合は配列(シーケンシャル)であることがわかります。では、手動で宣言するとどうなるでしょうか

$array1 = array(1 => 123, 2 => 312, 3 => 456);
// and
$array2 = array(123,312,456);

質問:

  1. $array1配列ですか、それともハッシュですか?
  2. ハッシュと配列に関する私の考えは正しいですか?
4

1 に答える 1

2

PHP は連想配列のみを使用します。配列がインデックス付き配列 from to である可能0性があるかどうかを判断するには、size - 1すべてのキーがfrom toarray[] = xであるかどうかを確認する方法しか知られていません。0size - 1

(配列は、 からの増分キーを使用して、「連想」方法 (つまり、キーと値の両方を提供する) で構築できますが、上記の方法 ( pushまたは)0を使用して構築されたものではないことを判断する方法がないことに注意してください。とにかく、それは違いがないので)[]

$i = 0;
foreach (array_keys($array) as $key) {
  if ($key !== $i) break;  // Note the !== (not !=)
  $i++;
}

if ($i == count($array)) {
  // looks like array was built using indexing (see text above)
}

最後の test$i == count($array)が true の場合、数値が 0 から始まり、最後の要素まで、要素ごとに 1 ずつ増加するすべてのキーを示します。

于 2013-06-03T03:58:33.103 に答える