2

php.netで説明されているように、array_key_exists()を正常に使用しています。

例:

<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>

しかし、値を取り出してください、そしてそれは機能しません。

<?php
$search_array = array('first', 'second');
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>

キーだけで2​​つのアレイを比較する方法がわからない。

4

5 に答える 5

12

最初の例は連想配列です:値が割り当てられたキー。2番目の例は、よりきれいな言い方です。

array(0 => 'first', 1 => 'second')

2つ目は、 in_arrayを使用する必要があります。キーの存在をチェックするのではarray_key_existsなく、値の存在をチェックする必要がin_arrayあります。

if(in_array('first', $array))
于 2010-05-26T22:23:58.553 に答える
5

PHPでは、配列の各要素には、キーの2つの部分があります。

各値に付加するキーを手動で指定しない限り、PHPは各要素に0から始まり、1ずつ増加する数値インデックスを提供します。

だから違い

array('first','second')

array('first'=>1,'second'=>4)

最初のものにはユーザー定義のキーがないということです。(実際にはキー0と1があります)

あなたがprint_r()最初にやるとしたら、それは次のようなことを言うでしょう

Array {
    [0] => "first",
    [1] => "second"
}

一方、2番目は次のようになります

Array {
    ["first"]  => 1,
    ["second"] => 2
}

したがって、「最初の」キーが存在するかどうかを確認するには、

array_key_exists('first',$search_array);

「first」が存在するかどうかを確認するには、次を使用します

in_array('first',$search_array);
于 2010-05-26T22:29:25.747 に答える
0

2番目の例では、配列キーを割り当てていません。オブジェクトの基本的な「リスト」を設定するだけです。

in_array("first", $search_array);値が通常の配列にあるかどうかを確認するために使用します

于 2010-05-26T22:21:35.343 に答える
0

2番目の例では、キーは数値であり、$search_array実際には次のようになります。

array(0=>'first', 1=>'second');

したがって、key「最初の」は存在valueしませんが、「最初の」は存在します。それで

in_array('first', $search_array);

使用したい関数です。

于 2010-05-26T22:23:17.367 に答える
0

PHPでは、配列要素にキーを与えていない場合、それらはデフォルトのキー値を取ります。

 $search_array = array(0=>'first', 1=>'second');

とにかく、以下のようにarray_flip関数を使用することで、この問題を修正できます。

$search_array = array('first', 'second');
if (array_key_exists('first', array_flip($search_array))) {
    echo "The 'first' element is in the array";
}
于 2015-08-20T08:55:36.747 に答える