PrimuS
PrimuS

Reputation: 2683

Max Value of multidimensional array

I have this Array

  Array
(
    [2014-08-14] => Array
        (
            [18:00:00] => Array
                (
                    [6] => Array
                        (
                            [price] => 15.36
                            [avail_clean] => 5
                            [avail_noclean] => 6
                        )

                    [7] => Array
                        (
                            [price] => 17.35
                            [avail_clean] => 2
                            [avail_noclean] => 3
                        )

                )

            [19:00:00] => Array
                (
                    [6] => Array
                        (
                            [price] => 15.36
                            [avail_clean] => 5
                            [avail_noclean] => 6
                        )

                    [7] => Array
                        (
                            [price] => 17.35
                            [avail_clean] => 2
                            [avail_noclean] => 3
                        )

                )

        )

)

How can I get the following for 6 & 7 seperately: - Sum of price - max of avail_clean - max of avail_noclean

I got that far for the price:

foreach ($bookable as $date=>$key) {
    foreach ($key as $time=>$key2) {
        foreach($key2 as $room=>$key3){
            foreach($key3 as $price=>$key4){
                if($price == "price"){
                    if(isset($sumRoom[$room]['total'])){
                        $sumRoom[$room]['total'] += $key4;
                    }else{
                        $sumRoom[$room]['total'] = $key4;
                    }
                }
            }
        }

    }
}

Gives me this

Array(
[6] => Array
    (
        [total] => 30,72
    )

[7] => Array
    (
        [total] => 34,7
    )

)

But what about the max(), where should I put that?

Upvotes: 0

Views: 227

Answers (1)

Shaunak Shukla
Shaunak Shukla

Reputation: 2347

foreach ($bookable as $date=>$times) {
    foreach ($times as $time=>$rooms) {
        foreach($rooms as $room=>$options){ $sumRoom[$room]['total'] = 0;
            foreach($options as $option=>$value){

                if($option == "price"){
                    $sumRoom[$room]['total'] += $value;
                }
                if($option == "avail_clean"){
                    $avail_clean[$room][] = $value;
                }
                if($option == "avail_noclean"){
                    $avail_noclean[$room][] = $value;
                }

            }
            $sumRoom[$room]['avail_clean_max'] = max($avail_clean[$room]);
            $sumRoom[$room]['avail_noclean'] = max($avail_noclean[$room]);
        }
    }
}

I've edited my answer.. I've merged all in one array i.e. $sumRoom

Upvotes: 1

Related Questions