如何在没有$a[null]
的情况下添加uasort
?
我的代码是
$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)
使用$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));
这将寻找“最高”(不仅仅是最后一个键)并执行相同的任务。如果您的$a
密钥尚未按顺序排列,这很方便。
或者,如果您想查看循环版本:
$max=max(array_keys($a));
for($i=0; $i<=$max; ++$i){
$result[]=isset($a[$i])?$a[$i]:null;
}
答案 1 :(得分: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)
答案 2 :(得分:-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'