2016-06-29 3 views
-2

Sagen wir, ich habe ein Array wie solche:Ausfüllen fehlenden Array-Indizes in php

$chartData = array ([00] => 1 [03] => 1 [09] => 1 [10] => 3 [11] => 1 [12] => 4 [13] => 2 [14] => 4 [15] => 6 [16] => 3 [17] => 5 [18] => 2 [20] => 1 [22] => 1) 1

Wie kann ich bis 24 in den fehlenden Indizes nach oben füllen (so 02, 04, 05, ect bis 24.) mit 0s?

+1

ist es eine feste Anzahl von 24? – Matt

+0

Was sollte der letzte Index sein? –

+6

Achten Sie sehr auf Zahlen mit führenden Nullen; sie werden als oktal von PHP behandelt, und '09' ist ungültig oktal –

Antwort

-1

Ich würde die Liste der Schlüssel erhalten, verwenden Sie die zum Erstellen einer Liste von erwarteten Schlüssel und dann ein Diff auf dem Array. Als solche

//Get the keys 
$keys = array_keys($chartData); 

//Convert them to integers for easier use 
$keys = array_map(function ($key) { 
    return (int) $key; 
}, $keys); 

//Get the last key 
end($keys); 
$lastKey = current($keys); 

//Create the keys that we expect 
$expectedKeys = range(0, $lastKey); 

//Find out which keys are missing 
$missingKeys = array_diff($expectedKeys, $keys); 
0

Sie können

function addkeyforArray(&$array) 
{ 
    end($array); 
    $maxcount = key($array); //Get the final key as max! 
    for($i = 01; $i < $maxcount; $i++) 
    { 
     if(!isset($array[$i])) 
     { 
      $array[$i] = ''; 
     } 
    } 
} 

addkeyforArray($array); 
0

einfachste Weg, so etwas wie dieses versuchen, ist eine zweizeilige Schleife.

for ($i = min($k=array_keys($chartData)); $i<=max($k); $i++) 
    $chartData[$i] = isset($chartData[$i]) ? $chartData[$i] : 0;