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

时间:2019-01-05 23:48:18

标签: php arrays

我正在尝试检查WordPress数据库中的日期字符串中是否包含日期字符串。 当前,数组中只有一个值:2019-01-02

如果我打印数组,我会得到:

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

为什么无法识别该值在数组中?

<?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);
?>

以上没有结果。

非常感谢您的帮助。

Kresten

2 个答案:

答案 0 :(得分:1)

之所以会发生这种情况,是因为您的数据结构是一个对象数组,并且每个对象都包含一个名为 date 的字段。要检查特定日期是否在该特定数组中,您应该执行以下操作:

<?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);
?>

答案 1 :(得分:0)

它不起作用,因为in_array不适合关联(键,值)数组。

如果您具有以下数组:

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

...它将起作用。但是它不能与键一起使用。

如果您只想寻找一个特定的“键”(在这种情况下为date),则可以将范围修改为仅该“列”:

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

在您的代码中:

<?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);
?>