之后填充缺少值的数组

I'm getting values for my flot chart via ajax.

At the backend script my test array looks like this:

Array
(
    [0] => Array
        (
            [0] => 6
            [1] => 1
        )

    [1] => Array
        (
            [0] => 7
            [1] => 7
        )

    [2] => Array
        (
            [0] => 8
            [1] => 37
        )

    [3] => Array
        (
            [0] => 9
            [1] => 44
        )
)

The value with the offset [0] represents the hour. Now I need 24 array objects for every hour. How to maintain this without touching the given elements?

e.g.

Array
(
    [0] => Array
        (
            [0] => 0
            [1] => 0
        )

    [6] => Array
        (
            [0] => 6
            [1] => 1
        )
    [...]
    [7] => Array
        (
            [0] => 7
            [1] => 7
        )

    [8] => Array
        (
            [0] => 8
            [1] => 37
        )

    [9] => Array
        (
            [0] => 9
            [1] => 44
        )

Thanks in advance.

Solution for me:

while ($stmt->fetch()) {
    $x = $hour;
    $y = $zugriffe;
    $data1[$x] = array ($x, $y);
}

for ($i=0;$i<=24;$i++){
    if (!isset($data1[$i])){
        $data1[$i] = array ($i,0);
    }
}
sort($data1);

Assume the array's name is $a, you can do like this:

for($i = 0; $i < 24; $i++) {
    if(isset($a[$i])) continue;
    else {
        $a[$i] = array($i,"something you like here");
    }
}

You want to "re-key" this result set according to the first subarray value, and then merge it into an array of 24 hour elements.

Try this:

$data = [
    [6,  1],
    [7,  7],
    [8, 37],
    [9, 44]
];

$hours = array_fill(0, 25, [0, 0]);
$data  = array_combine(array_column($data, 0), $data);
$hours = array_replace($hours, $data);

print_r($hours);

This:

  1. Creates a 24 element array $hours containing sub-arrays containing default values [0, 0]
  2. Re-keys your $data, pulling out and using the first value of each sub-array to do so. This assumes you are using PHP 5.5.
  3. Finally, replace the modified $data into $hours

This yields:

Array
(
    [0] => Array
        (
            [0] => 0
            [1] => 0
        )

    [1] => Array
        (
            [0] => 0
            [1] => 0
        )

    [2] => Array
        (
            [0] => 0
            [1] => 0
        )

    [3] => Array
        (
            [0] => 0
            [1] => 0
        )

    [4] => Array
        (
            [0] => 0
            [1] => 0
        )

    [5] => Array
        (
            [0] => 0
            [1] => 0
        )

    [6] => Array
        (
            [0] => 6
            [1] => 1
        )

    [7] => Array
        (
            [0] => 7
            [1] => 7
        )

    [8] => Array
        (
            [0] => 8
            [1] => 37
        )

    [9] => Array
        (
            [0] => 9
            [1] => 44
        )

    [10] => Array
        (
            [0] => 0
            [1] => 0
        )

    [11] => Array
        (
            [0] => 0
            [1] => 0
        )

    [12] => Array
        (
            [0] => 0
            [1] => 0
        )

    [13] => Array
        (
            [0] => 0
            [1] => 0
        )

    [14] => Array
        (
            [0] => 0
            [1] => 0
        )

    [15] => Array
        (
            [0] => 0
            [1] => 0
        )

    [16] => Array
        (
            [0] => 0
            [1] => 0
        )

    [17] => Array
        (
            [0] => 0
            [1] => 0
        )

    [18] => Array
        (
            [0] => 0
            [1] => 0
        )

    [19] => Array
        (
            [0] => 0
            [1] => 0
        )

    [20] => Array
        (
            [0] => 0
            [1] => 0
        )

    [21] => Array
        (
            [0] => 0
            [1] => 0
        )

    [22] => Array
        (
            [0] => 0
            [1] => 0
        )

    [23] => Array
        (
            [0] => 0
            [1] => 0
        )

)

Hope this helps :)

You can try also this:

    // yours test array
    $times = array(
        array(6,1),
        array(7,7),
        array(8,37),
        array(9,44)
    );

    // array with all hours
    $fullTimes = array_fill(0, 24, array(0,0));

    foreach ($times as $time) {
        $fullTimes[$time[0]] = $time;
    }