配列値が存在するかどうかを確認するにはどうすればよいですか?


109

または$something['say']の値がある'bla''omg'どうかを確認するにはどうすればよいですか?

$something = array('say' => 'bla', 'say' => 'omg');

45
配列のキーは一意である必要があります。
2010年

回答:


113

使用してif

if(isset($something['say']) && $something['say'] == 'bla') {
    // do something
}

ところで、キーで値をsay2回割り当てているため、配列は値が1つだけの配列になります。



47

使用: in_array()

$search_array = array('user_from','lucky_draw_id','prize_id');

if (in_array('prize_id', $search_array)) {
    echo "The 'prize_id' element is in the array";
}

出力は次のとおりです。 The 'prize_id' element is in the array


使用: array_key_exists()

$search_array = array('user_from','lucky_draw_id','prize_id');

if (array_key_exists('prize_id', $search_array)) {
    echo "The 'prize_id' element is in the array";
}

出力なし


結論として、array_key_exists()単純な配列では機能しません。配列キーが存在するかどうかを確認するためだけです。in_array()代わりに使用してください。

これがより多くの例です:

<?php
/**++++++++++++++++++++++++++++++++++++++++++++++
 * 1. example with assoc array using in_array
 *
 * IMPORTANT NOTE: in_array is case-sensitive
 * in_array — Checks if a value exists in an array
 *
 * DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('a' => 'bla', 'b' => 'omg');
if (in_array('omg', $something)) {
    echo "|1| The 'omg' value found in the assoc array ||";
}

/**++++++++++++++++++++++++++++++++++++++++++++++
 * 2. example with index array using in_array
 *
 * IMPORTANT NOTE: in_array is case-sensitive
 * in_array — Checks if a value exists in an array
 *
 * DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('bla', 'omg');
if (in_array('omg', $something)) {
    echo "|2| The 'omg' value found in the index array ||";
}

/**++++++++++++++++++++++++++++++++++++++++++++++
 * 3. trying with array_search
 *
 * array_search — Searches the array for a given value 
 * and returns the corresponding key if successful
 *
 * DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('a' => 'bla', 'b' => 'omg');
if (array_search('bla', $something)) {
    echo "|3| The 'bla' value found in the assoc array ||";
}

/**++++++++++++++++++++++++++++++++++++++++++++++
 * 4. trying with isset (fastest ever)
 *
 * isset — Determine if a variable is set and 
 * is not NULL
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('a' => 'bla', 'b' => 'omg');
if($something['a']=='bla'){
    echo "|4| Yeah!! 'bla' found in array ||";
}

/**
 * OUTPUT:
 * |1| The 'omg' element value found in the assoc array ||
 * |2| The 'omg' element value found in the index array ||
 * |3| The 'bla' element value found in the assoc array ||
 * |4| Yeah!! 'bla' found in array ||
 */
?>

ここは PHP DEMO


array_key_exists()後者に$search_arrayは連想配列が含まれていますが、配列キーをチェックします。間違いなく動作しません。あなたはarray_flip()それを最初にすべきです。
Chay22、2016


6

インデックスが定義されているかどうかを確認するには: isset($something['say'])


この回答の意図がわかりません。インデックスの値をチェックする目的をどのように達成しますか?
Brad Koch

良い質問。それは書かれているので、これは質問にまったく答えません。覚えていませんが、質問が最初に尋ねられてから約3分後に回答したので、OPが元の質問を編集して、より明確にするために、編集として登録される前の最初の編集カットオフ内で行ったと思います。それが理にかなっている場合。
エコー

5

あなたは、配列が持つすべての特定の要素を持っているかどうかをテストすることができますISSET()または時にはより良いarray_key_exists() (ドキュメントが違いを説明します)。配列に「say」というインデックスを持つ要素があるかどうかわからない場合は、まずそれをテストする必要があります。そうしないと、「warning:undefined index ....」メッセージが表示される可能性があります。

要素の値が文字列と等しいかどうかのテストについては、==または(場合によってはより良い)アイデンティティー演算子===を使用して、型のジャグリングを許可することはできません。

if( isset($something['say']) && 'bla'===$something['say'] ) {
  // ...
}


5

チェックするだけの場合はin_array()で問題ありませんが、値が存在することを確認して関連するキーを返す必要がある場合は、array_searchの方が適しています。

$data = [
    'hello',
    'world'
];

$key = array_search('world', $data);

if ($key) {
    echo 'Key is ' . $key;
} else {
    echo 'Key not found';
}

これは「キーは1」を出力します


3

PHP関数を使用するだけ 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";
}
?>

3
<?php
if (in_array('your_variable', $Your_array)) {
    $redImg = 'true code here';
} else {
    $redImg = 'false code here';
} 
?>

1
より良い答えは通常、コードに加えて説明が含まれています。そうすることであなたの答えが良くなると思います!
アミット

1

まず、連想配列はキーを1回だけ定義できるため、この配列は存在しません。それ以外の場合は、を使用in_array()して、その特定の配列要素が可能な解決策の配列に含まれているかどうかを判断します。


1
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

配列を針として使用するin_array in_array()の別の使用法

<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');

if (in_array(array('p', 'h'), $a)) {
    echo "'ph' was found\n";
}

if (in_array(array('f', 'i'), $a)) {
    echo "'fi' was found\n";
}

if (in_array('o', $a)) {
    echo "'o' was found\n";
}
?>

1

単純な配列を使用していると仮定します

。すなわち

$MyArray = array("red","blue","green");

この機能を使用できます

function val_in_arr($val,$arr){
  foreach($arr as $arr_val){
    if($arr_val == $val){
      return true;
    }
  }
  return false;
}

使用法:

val_in_arr("red",$MyArray); //returns true
val_in_arr("brown",$MyArray); //returns false
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.