为什么我的值不被识别在数组中?

I'm trying to check if a date string is in an array of dates from a WordPress database. Currently, there is only one value in the array: 2019-01-02

If I print the array I get this:

Array ( [0] => stdClass Object ( [date] => 2019-01-02 ) )

Why is the value not recognized to be in the array?

<?php
    $sql = "SELECT date FROM wp_table";
    $result = $wpdb->get_results($sql);
    if (in_array('2019-01-02', $result)) {
        echo "Yes, the date is in the array!";
    }
    print_r($result);
?>

The there is no result from the above.

Any help is very much appreciated.

Kresten

It's not working because in_array is not suited to an associative (key, value) array.

If you had the following array:

array("2019-01-01", "banana", "dog)

...it would work. But it won't work with the keys.

If you are only ever looking for one specific 'key', in this case date, you can amend your scope to be only that 'column':

$dates = array_column( $result, 'date' );

in your code:

<?php
    $sql = "SELECT date FROM wp_table";
    $result = $wpdb->get_results($sql);
    $dates = array_column( $result, 'date' );

    if (in_array('2019-01-02', $dates)) {
        echo "Yes, the date is in the array!";
    }
    print_r($result);
?>

This happens because your data structure is an array of objects, and each one of those contains a field called date. To check if a specific date is in that specific array, you should do:

<?php
    $sql = "SELECT date FROM wp_table";
    $result = $wpdb->get_results($sql);
    foreach ($result as $res)
        if ($res->date == '2019-01-02') {
            echo "Yes, the date is in the array!";
            break;
        }
    print_r($result);
?>