如何将null键的空值添加到数组php中?

时间:2017-09-03 21:53:12

标签: php arrays

如何在没有$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 )

谢谢

3 个答案:

答案 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'