【问题标题】:PHP Matching value in an multi-dimensional arrayPHP匹配多维数组中的值
【发布时间】:2012-01-18 00:56:25
【问题描述】:

我以 10 分钟的间隔循环 2 次,效果很好并输出如下时间:

<?=$time->format('H:i')?>

然后我从数据库中提取数据,然后我想查看循环中的数据是否与数据库中的数据匹配。我创建了一种方法来从数据库中获取所有记录并将它们输出到数组中。然后我想使用 in_array 来匹配它们,然后通过另一种方法运行该值以获取有关它的数据。问题是它不匹配,问题是:

if (array_search($time->format('H:i'), $bookings))
echo "Match";

$booking 是一个多维数组,如下所示:

Array ( 
[0] => Array ( [id] => 1 [time] => 12:00 ) 
[1] => Array ( [id] => 2 [time] => 15:00 )
...
)

提前致谢!

【问题讨论】:

  • 为什么不修改您的 SQL 查询,让您的结果与他们的时代相匹配?
  • 我预计它会在几分钟内抓取 array_filter 的答案......但请按照 Mark 的建议。
  • @Wrikken 甚至是 array_walk()!

标签: php mysql arrays multidimensional-array


【解决方案1】:

如果直接从数据库中获取值会容易得多。如果你想在 php 中处理它,你可以尝试使用 array_walk()。我不确定语法,但应该类似于

function search($value, $key, $needle)
{
    array_search($needle, $value);
}

array_walk($bookings, 'search', $time->format('H:i'));

$value 将是您的内部数组。
各位大侠,如果我的语法有误,请纠正我

【讨论】:

  • 抱歉把它完全复杂化了,只是写了一个简单的方法从数据库中获取它并且运行良好,不过谢谢! :)
【解决方案2】:

如果可以的话,直接相应地查询数据库可能会比你的查询更简单

select * from `table_name` WHERE `date_field` = $your_date

如果这不能形成解决方案,您可以像上面一样使用 array_walk 或简单地循环一下:

foreach($bookings as $array) {
    if(array_search($time->format('H:i'), $array)) {
        echo 'match';
        // If you don't want to keep searching use 'break'.
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多