2017-09-03 58 views
2

如何添加$a[null]沒有uasort如何將null值的null值添加到數組php中?

我的代碼是

$a = array(3=>'fff',4=>'sss'); 
end($a); 
$key = key($a); 
for($i=0;$i<=($key);$i++){ 
    if(!isset($a[$i])){$a[$i]=null;} 
} 

我想這

([0] => null [1] => null ...... [3] => fff [4] => sss)

謝謝

+0

您不能有空鍵;數組鍵必須是整數或字符串值:你的意思是空值嗎? –

+0

'$ keys = max(array_keys($ a)); $ a = array_merge(array_fill(0,$ keys-1,null),$ a);' –

+0

爲什麼你需要那個? – axiac

回答

0

使用該$a數組中的最後一個鍵一個班輪:

代碼:

var_export(array_replace(array_fill(0,key(array_slice($a,-1,null,true)),null),$a)); 

輸出:

array (
    0 => NULL, 
    1 => NULL, 
    2 => NULL, 
    3 => 'fff', 
    4 => 'sss', 
) 

這將產生使用array_fill()默認陣列和$a數組中的最後關鍵。 [0=>NULL,1=>NULL,2=>NULL,3=>NULL](我們知道索引4已經有一個值,所以我們不需要走得更遠)。

然後只需使用array_replace()覆蓋$a中存在元素的空元素。

這裏有一個稍微改進的版本:(Demo

var_export(array_replace(array_fill(0,max(array_keys($a)),null),$a)); 

這將尋求「最高」(不只是最後的關鍵),並執行相同的任務。如果你的鍵沒有按順序,這很方便。

或者,如果你想看到一個循環的版本:

$max=max(array_keys($a)); 
for($i=0; $i<=$max; ++$i){ 
    $result[]=isset($a[$i])?$a[$i]:null; 
} 
-1

這裏是你需要

代碼
<?php 
$a = array(3=>'fff',4=>'sss'); 
$new_array = []; 
end($a); 
$key = key($a); 
for($i=0;$i<=($key);$i++){ 
    if(!isset($a[$i])){ $new_array[] = null; } 
    else $new_array[] = $a[$i]; 
} 
$a = $new_array; 
var_dump($a); 
?> 

這給

0 => null 
    1 => null 
    2 => null 
    3 => string 'fff' 
    4 => string 'sss' 
0
<?php 

$data = [ 
    3 => 'fff', 
    4 => 'sss' 
]; 

$nulls = array_fill(0, max(array_keys($data)), null); 
$out = array_replace($nulls, $data); 

var_dump($out); 

輸出:

array (size=5) 
    0 => null 
    1 => null 
    2 => null 
    3 => string 'fff' (length=3) 
    4 => string 'sss' (length=3)