我正在尝试检查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
答案 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);
?>