搜索日期数组不会返回结果

时间:2017-01-06 15:33:13

标签: php arrays

您好我正在尝试使用以下函数根据当前日期搜索一小时:

$key = array_search($todayday, array_column($days, 'date', 'hours'));

其中$ todayday等于今天的日期。

数组$days是:

                 Array
(
    [0] => Array
        (
            [date] => 01
            [hours] => 0
        )

    [1] => Array
        (
            [date] => 02
            [hours] => 8
        )

    [2] => Array
        (
            [date] => 03
            [hours] => 16
        )

    [3] => Array
        (
            [date] => 04
            [hours] => 24
        )

    [4] => Array
        (
            [date] => 05
            [hours] => 32
        )

    [5] => Array
        (
            [date] => 06
            [hours] => 40
        )

    [6] => Array
        (
            [date] => 07
            [hours] => 40
        )
... etc....

虽然$ todaydate等于1,2,3,4,5但它的工作原理。但是对于6和7并没有返回任何东西。欢迎任何帮助解决此问题。谢谢

我怀疑,因为date = 6和7具有相同的小时值,这就是为什么它不返回任何东西,但问题是如何实际返回它。

1 个答案:

答案 0 :(得分:2)

您的假设是正确的,您不能有重复的密钥。使用搜索中的密钥,然后访问hours

$key   = array_search($todayday, array_column($days, 'date'));
$hours = $days[$key]['hours'];

或更短:

$hours = $days[array_search($todayday, array_column($days, 'date'))]['hours'];

如果索引不是基于0和顺序的,请使用array_values()重新索引:

$days  = array_values($days);
$key   = array_search($todayday, array_column($days, 'date'));
$hours = $days[$key]['hours'];