簡體   English   中英

PHP的in_array函數,為什么這不起作用?

[英]PHP in_array function, why this doesn't work?

我有這個數組,從數據庫生成:

do {
    $rsvp_array[$row_rsRSVP['rsv_guest']] = array(
        'id' => $row_rsRSVP['rsv_id'],
        'guest' => $row_rsRSVP['rsv_guest'],
        'confirmed' => $row_rsRSVP['rsv_confirmed']
    );
} while ($row_rsRSVP = mysql_fetch_assoc($rsRSVP));

它很好,有print_r()我得到這個:

Array
(
    [1] => Array
        (
            [id] => 1
            [guest] => 1
            [confirmed] => 1
        )

    [15] => Array
        (
            [id] => 2
            [guest] => 15
            [confirmed] => 0
        )

    [5] => Array
        (
            [id] => 3
            [guest] => 5
            [confirmed] => 1
        )

    [10] => Array
        (
            [id] => 4
            [guest] => 10
            [confirmed] => 1
        )

    [6] => Array
        (
            [id] => 5
            [guest] => 6
            [confirmed] => 0
        )

)

所以我知道陣列正在工作。

現在我需要查看一個數字是否在主數組中,即:

if (in_array(15, $rsvp_array)) { echo 'OK'; }

好吧,這不起作用! 15號是陣列的第二把鑰匙,但沒有運氣! 我哪里錯了? 提前感謝您的答案......

in_array()將搜索 - 而不是鍵。

你應該:

  • 使用array_key_exists()if (array_key_exists(15, $rsvp_array)) {...}
  • 或使用isset()來測試是否設置了某個鍵: if (isset($rsvp_array[15])) {...}
  • 或者(壞主意)使用array_keys()獲取密鑰,並在該密鑰數組上使用in_array()

可能你正在尋找用於檢查值是否在數組中的array_key_exists in_array而不是key。

if (array_key_exists(15,$rsvp_array))
{
  echo "ok";
}

或者用isset檢查

isset($rsvp_array[15])

in_array()只查看數組的值,但是如果設置了特定的鍵,則需要知道

if (array_key_exists(15, $rsvp_array)) { echo 'OK'; }

要么

if (isset($rsvp[15])) { echo 'OK'; }

在大多數情況下,第二個就足夠了,但如果值為null ,則它不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM