4

私はこのコードを理解しようとしています:

<?php 

$list = array(-10=>1, 2, 3, "first_name"=>"mike", 4, 5, 10=>-2.3); 

print_r(array_keys($list));
?> 

出力:

Array ( [0] => -10 [1] => 0 [2] => 1 [3] => first_name [4] => 2 [5] => 3 [6] => 10 ) 

インデックス 4 と 5 の両方にあるため、なぜそうなのか[4] => 2 and why [5] => 3と思ってい[4] => 4 and [5] => 5ます。この配列で正確に何が起こっているのかについて少し混乱しています。可能であれば、誰かが私を正しい方向に向けることができます。ありがとう.

4

5 に答える 5

6

キー付きとキーなしの配列エントリを混在させているため、少し不安定になります。

$list = array(
    -10 => 1   // key is -10
        => 2  // no key given, use first available key: 0
        => 3  // no key given, use next available key: 1
    "first_name" => "mike" // key provided, "first_name"
        => 4  // no key given, use next available: 2
        => 5  // again no key, next available: 3
     10 => -2.3  // key provided: use 10

キーを指定しない場合、PHP は 0 から始まるキーを割り当てます。潜在的な新しいキーが既に割り当てられているキーと競合する場合、PHP が使用できるキーを見つけるまでその潜在的なキーはスキップされます。

于 2014-05-02T15:13:38.657 に答える
1

PHP がキーを待っているため、正常です。

$list = array(-10=>1, 2, 3, "first_name"=>"mike", 4, 5, 10=>-2.3); 

そして、あなたは彼に 2,3,4,5 を与えないので、キーを自動で与えます。

つまり ==> [0] => 2 、 [1] => 3 、 [2] => 4 および [3] => 5 です。

于 2014-05-02T15:15:33.993 に答える
1

これを試して:

$list = array(-10=>1, 2 => null, 3=> null, "first_name"=>"mike", 4=> null, 5=> null, 10=>-2.3);

必要な結果を得るには、2、3、4、および 5 が値ではなくキーとしてカウントされます

于 2014-05-02T15:14:07.410 に答える
0

キーが設定されていない場合、array_keysは最後に割り当てられたキーを追跡し、連続した番号を割り当てます。

array(7) {
  [0]=>
  int(-10)
  [1]=>
  int(0)   // first without key (starting on 0)
  [2]=>
  int(1)   // second without key
  [3]=>
  string(10) "first_name"
  [4]=>
  int(2)  // third without key 
  [5]=>
  int(3)  // fourth without key
  [6]=>
  int(10)
}
于 2014-05-02T15:20:31.330 に答える
0

あなたの配列ではkey => value、ちょうどと混合していvalueます。

-10 が最初のキーです。次に、次の項目のキーを定義していないため、順番に自動的に割り当てられます。

于 2014-05-02T15:11:47.737 に答える