我已經和陣列是這樣的:
陣列( [0] =>蘋果 [2] =>橙 [5] =>梨 [8] =>梨 )
有一個函數可以完成缺少的索引:1,3,4,6,7 ????
我已經和陣列是這樣的:
陣列( [0] =>蘋果 [2] =>橙 [5] =>梨 [8] =>梨 )
有一個函數可以完成缺少的索引:1,3,4,6,7 ????
這應該是更大的陣列更快。對於較小的數組,任何方法都可以。
$existingKeys = array_keys($array);
//you can use any value instead of null
$newKeys = array_fill_keys(range(min($existingKeys), max($existingKeys)), null);
$array += $newKeys;
//optional, probably not needed
ksort($array);
如果你想要做的是重新排序陣列等你拿
Array([0] => Apple [1] => Orange [2] => Pear [3] => Pear)
只需創建一個新的磁盤陣列和值複製到它。它會分配新的索引順序
即
$new_array = array();
for($value in $old_array)
$new_array[] = $value;
你可以嘗試從最低指數爲()到最高和完整,如果它是空的
for($i = 0 ;$i <= 8 ; $i++)
{
//if it's not set
if(!isset($array[$i]))
{
//set to empty
$array[$i] = "";
}
}
此外,你可以先算陣列上元素的數量並將其包裝在一個函數中
function completeIndexes($array)
{
$total = count($array);
for($i = 0 ;$i < $total ; $i++)
{
//if it's not set
if(!isset($array[$i]))
{
//set to empty
$array[$i] = "";
}
}
return $array;
}
for($i=0;i<count($array);++$i){
$array[$i] = isset($array[$i])? $array[$i] : '';
}
雖然它只是用空字符串填充丟失的鍵。不知道這是否適合你。
編輯
只注意到Perr0_hunter寫了幾乎同樣的事情,我之前做過:P
使用array_Values()代替for循環 – OIS 2009-04-08 08:37:51