배열 값이 있는지 확인하는 방법은 무엇입니까?


109

또는 $something['say']값이 있는지 어떻게 확인할 수 있습니까?'bla''omg'

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

45
배열의 키는 고유해야합니다.
Gumbo

답변:


113

사용 if?

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

Btw, 키로 값을 say두 번 할당 하므로 배열이 하나의 값만 가진 배열이됩니다.


289

PHP in_array 함수를 사용할 수 있습니다.

if( in_array( "bla" ,$yourarray ) )
{
    echo "has bla";
}

7
동일한 키를 가진 배열을 가질 수 있습니까? 두 번째 값이 원본을 덮어 쓰지 않습니까?
Citricguy

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


6

색인이 정의되었는지 확인하려면 다음을 수행하십시오. isset($something['say'])


이 답변의 의도를 이해하지 못합니다. 지수의 가치를 확인하는 목적을 어떻게 달성합니까?
Brad Koch

좋은 질문. 이것은 작성된 질문에 전혀 대답하지 않습니다. 기억하지 못하지만, 질문을받은 지 약 3 분 후에 답변을했기 때문에 OP가 편집으로 등록되기 전의 초기 편집 컷오프 내에 원래 질문을 더 명확하게하기 위해 편집 한 것 같습니다. 그게 말이된다면.
echo

5

isset () 또는 때로는 더 나은 array_key_exists ()를 사용 하여 배열에 특정 요소가 있는지 여부를 테스트 할 수 있습니다. (문서에 차이점이 설명되어 있음). 배열에 인덱스가 'say'인 요소가 있는지 확실하지 않은 경우 먼저 테스트해야합니다. 그렇지 않으면 'warning : undefined index ....'메시지가 표시 될 수 있습니다.

요소의 값이 문자열과 같은지 테스트하려면 == 또는 유형 juggling을 허용하지 않는 ID 연산자 === 를 사용할 수 있습니다.

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

array_key_exists는 항상 더 나은 솔루션입니다
AjayR

5

in_array ()는 검사 만하는 경우 괜찮지 만 값이 있는지 확인하고 관련 키를 반환해야하는 경우 array_search가 더 나은 옵션입니다.

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

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

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

그러면 "Key is 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
더 나은 답변 에는 일반적으로 코드 외에 설명이 포함됩니다. 그렇게하면 답변이 개선 될 것이라고 믿습니다!
amit

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.