John Siniger
John Siniger

Reputation: 885

Search array of dates does not return result

Hello I am trying to search for an hour based on the current date with the following function:

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

Where $todayday is equal to today day which comes from the sever day date.

the Array $days is:

                 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....

while $todaydate is equal to 1,2,3,4,5 it works. but for 6 and 7 does not return anything. Any help is welcome to resolve this issue. Thanks

I suspect that since date = 6 and 7 have the same value of hours this is why it does not return anything but the question is how to return it actually.

Upvotes: 2

Views: 49

Answers (1)

AbraCadaver
AbraCadaver

Reputation: 78994

Your supposition is correct, you can not have duplicate keys. Use the key from the search and then access hours:

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

Or shorter:

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

In the case where the indexes are not 0 based and sequential, use array_values() to re-index:

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

Upvotes: 2

Related Questions