在PHP中的array()中设置所有非使用索引为空

时间:2017-06-25 20:26:15

标签: php

我有一堆数组,定义如下:

array(2) { [0]=> string(0) "" [1]=> string(2) "XL" [2]=> string(0) "CD"}   
array(8) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" [5]=> string(3) "XLd" [6]=> string(0) "" [7]=> string(3) "CDW" }  

在php中是否有任何预定义的函数,我可以使所有未使用的索引小于上一个索引为空。 让我们说在第一个例子中使索引0为空。 或者在第二个例子中使所有0,1,2,3,4,6索引为空。

看起来应该如下:

boxplot

感谢

3 个答案:

答案 0 :(得分:0)

几乎是你的追求......

$exam2= array(5 => "XLd",7=>"CDW");
$end = array_keys(array_slice($exam2, -1,1,true))[0];
for($i = 0; $i < $end; $i++)   {
    $exam2[$i]=$exam2[$i]??"";
}

print_r($exam2);

...给出

Array
(
    [5] => XLd
    [7] => CDW
    [0] => 
    [1] => 
    [2] => 
    [3] => 
    [4] => 
    [6] => 
)

$end = array_keys(array_slice($exam2, -1,1,true))[0];行提取数组中最后一行的键,这将形成循环的终点。然后$exam2[$i]=$exam2[$i]??"";使用PHP 7中的一个新功能,它可以节省必须执行的isset(),如果它尚未设置,则只需将其设置为空白。

答案 1 :(得分:0)

不存在特定功能,但您可以使用array_fill_keys功能获取它。

$exam2= array(5 => "XLd",7=>"CDW");

$max_key = max(array_keys($exam2));
$exam2 += array_fill_keys(range(0, $max_key), "");

var_dump($exam2);

答案 2 :(得分:0)

使用array_fill_keys()函数的另一种解决方案:

$exam2= [5 => "XLd",7=>"CDW"];
$last = end($exam2);  // setting internal pointer of the array on its last item
$exam2 = $exam2 + array_fill_keys(range(0, key($exam2)), "");
ksort($exam2);   // sorting by keys

print_r($exam2);

输出:

Array
(
    [0] => 
    [1] => 
    [2] => 
    [3] => 
    [4] => 
    [5] => XLd
    [6] => 
    [7] => CDW
)