0

PHPでは、次のようなインデックス付き配列があることを知っています。

$array = ("hello", "world")

次のような連想配列と同じです。

$array = (0 => "hello", 1 => "world");

だから私の質問は、このようなコードが有効かどうかです:

 $hello = $array[$array["hello"]];

私の考えはそれがに翻訳されるということです

$hello = $array[0]

、これは等しくなります

$hello = "hello"

。言い換えれば、

$array["hello"]

0に等しい?

4

3 に答える 3

1

いいえ、 array_flipでキーと値を切り替えない限り、配列要素のキーをその値ですぐにフェッチすることはできません。

$arr = array('hello', 'world');
$arr = array_flip($arr);
print $arr['hello']; // 0
于 2012-07-08T22:40:41.203 に答える
1

考えを見てみましょう:

$array = ("hello", "world") // This is implicitly indexed by integer.

以下と同じです:

$array = (0 => "hello", 1 => "world"); // Explicit indexing.

実行することで確認できprint_r($array)ます; いずれの場合も、出力にはインデックス付き配列が表示されます。PHP 配列はすべて連想です。キーを指定しなかった場合でも、配列内の値は整数のインデックス番号で並べられます。

それでは、次を見てみましょう。

だから私の質問は、このようなコードが有効かどうかです:

 $hello = $array[$array["hello"]];

ここでコードが壊れます。なんで?

$array["hello"]は有効な値ではありません。これが参照しているのは、「インデックス「hello」にある配列のリストの値です。

ただし、array("hello", "world")「hello」のインデックス キーはありません。むしろ、暗黙的にキーインデックス 0を持つ"hello" を持っています。

PHP 配列についてよく読んで、次のことを理解してください。

  1. PHP 配列はすべて連想です。キーは文字列にすることができますが、明示的に設定されていない場合は整数になります。
  2. 連想配列は、キー => 値のペアの形式です。キーがある場合は、それに関連付けられた値を見つけることができます。
  3. PHP 配列から値を取得しようとするときの構文は次のとおりです。$array['key']または、多次元の場合$array['firstlevelkey']['secondlevelkey']などです。返される値は、その特定のキーのキー => 値のペアの値になります。

これがお役に立てば幸いです。

于 2012-07-08T23:09:24.737 に答える
0

いいえ、「hello」は$arrayの有効なキーではないためです。

array_key_exists(key、* array *)を使用して、キーが存在するかどうかを確認できます。

于 2012-07-08T22:40:47.303 に答える