Bagaimana cara memeriksa apakah ada nilai array?

109

Bagaimana saya bisa memeriksa apakah $something['say']memiliki nilai 'bla'atau 'omg'?

$something = array('say' => 'bla', 'say' => 'omg');
Uffo
sumber
45
Kunci dalam larik harus unik.
Gumbo

Jawaban:

114

Menggunakan if?

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

Btw, Anda menetapkan nilai dengan kunci saydua kali, maka array Anda akan menghasilkan array dengan hanya satu nilai.

Tatu Ulmanen
sumber
289

Anda bisa menggunakan fungsi in_array PHP

if( in_array( "bla" ,$yourarray ) )
{
    echo "has bla";
}
Benjamin Ortuzar
sumber
7
Apakah mungkin memiliki array dengan kunci yang identik? Bukankah nilai kedua akan menimpa yang asli?
Citricguy
47

Menggunakan: 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";
}

Berikut adalah keluarannya: The 'prize_id' element is in the array


Menggunakan: 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";
}

Tidak ada keluaran


Kesimpulannya, array_key_exists()tidak bekerja dengan array sederhana. Ini hanya untuk menemukan apakah kunci array ada atau tidak. Gunakan in_array()sebagai gantinya.

Berikut lebih banyak contoh:

<?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 ||
 */
?>

Disini adalah PHP DEMO

Neeraj Singh
sumber
array_key_exists()memeriksa kunci array sedangkan yang terakhir $search_arrayberisi array asosiatif. Tidak diragukan lagi itu tidak akan berhasil. Anda harus array_flip()melakukannya dulu.
Chay22
7

Kamu bisa memakai:

Jasir
sumber
6

Untuk memeriksa apakah indeks sudah ditentukan: isset($something['say'])

gema
sumber
Saya tidak mengerti maksud dari jawaban ini. Bagaimana cara mencapai tujuan pemeriksaan nilai indeks?
Brad Koch
Pertanyaan bagus. Ini tidak menjawab pertanyaan sama sekali, seperti yang tertulis. Saya tidak ingat, tetapi karena saya menjawab sekitar 3 menit setelah pertanyaan awalnya diajukan, saya kira OP mengedit pertanyaan asli mereka untuk membuatnya lebih jelas, dalam cutoff edit awal sebelum didaftarkan sebagai edit. Jika itu masuk akal.
gema
5

Anda bisa menguji apakah sebuah array memiliki elemen tertentu atau tidak dengan isset () atau terkadang bahkan lebih baik array_key_exists () (dokumentasi menjelaskan perbedaannya). Jika Anda tidak dapat memastikan apakah array memiliki elemen dengan indeks 'say' Anda harus mengujinya terlebih dahulu atau Anda mungkin mendapatkan pesan 'peringatan: indeks tidak terdefinisi ....'.

Adapun untuk menguji apakah nilai elemen sama dengan string Anda dapat menggunakan == atau (sekali lagi terkadang lebih baik) operator identitas === yang tidak mengizinkan juggling tipe .

if( isset($something['say']) && 'bla'===$something['say'] ) {
  // ...
}
VolkerK
sumber
array_key_exists selalu merupakan solusi yang lebih baik
AjayR
5

in_array () baik-baik saja jika Anda hanya memeriksa tetapi jika Anda perlu memeriksa bahwa ada nilai dan mengembalikan kunci terkait, array_search adalah opsi yang lebih baik.

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

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

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

Ini akan mencetak "Key is 1"

Tom Jowitt
sumber
3

Cukup gunakan fungsi 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";
}
?>
Xman Klasik
sumber
3
<?php
if (in_array('your_variable', $Your_array)) {
    $redImg = 'true code here';
} else {
    $redImg = 'false code here';
} 
?>
Wisnu Sharma
sumber
1
Jawaban yang lebih baik biasanya berisi penjelasan selain kode. Saya yakin hal itu akan meningkatkan jawaban Anda!
amit
1

Pertama-tama, array asosiatif hanya dapat memiliki kunci yang ditentukan sekali, jadi array ini tidak akan pernah ada. Jika tidak, gunakan saja in_array()untuk menentukan apakah elemen larik spesifik itu ada dalam larik solusi yang memungkinkan.

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

Penggunaan lain dari in_array in_array () dengan array sebagai needle

<?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";
}
?>
Ahmad Sayeed
sumber
1

Dengan asumsi Anda menggunakan array sederhana

. yaitu

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

Anda dapat menggunakan fungsi ini

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

Pemakaian:

val_in_arr("red",$MyArray); //returns true
val_in_arr("brown",$MyArray); //returns false
Karim
sumber