【问题标题】:in_array() doesn't return all resultsin_array() 不返回所有结果
【发布时间】:2012-06-08 04:53:37
【问题描述】:

名为users 的数据库表有一个列timemarks

timemark 字段如下所示。11:00:00, 13:45:00, 17:00:00, 18:25:00(每个用户的时间标记不同)

我的 php 脚本应该列出具有指定时间标记的用户。

查询:SELECT * FROM ('users')(查询结果返回$users

循环:

  1. 遍历用户
  2. 通过使用str_getcsv 拆分时间标记字符串,为每个用户创建数组$timemarks_arr
  3. 用指定的时间标记值回显用户
foreach ($users as $user): 

   $timemarks_arr = str_getcsv($user->timemarks); //split time-marks by comma and create array

    if (in_array("17:00:00", $timemarks_arr)) //users with specified time-mark
    {                               
        echo $entry->username . "<br />";
    }

endforeach;

由于某种原因,它只回显 2 个用户,但还有更多带有时间标记的用户 17:00:00。有人知道为什么吗?

【问题讨论】:

    标签: php mysql arrays loops foreach


    【解决方案1】:

    它不会匹配像 17:00:00 这样的值,因为有一个前导空格。

    试试这个去除字符串开头和结尾的所有空格:

    $timemarks_arr = array_map( "trim", str_getcsv($user->timemarks)); //split time-marks by comma and create array
    

    【讨论】:

    • 谢谢!修剪似乎有效。为了避免任何其他问题,我正在考虑在添加到数据库时将 00:00:00 时间格式更改为时间戳字符串
    猜你喜欢
    • 2021-06-21
    • 2015-10-23
    • 2021-01-02
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    相关资源
    最近更新 更多