我有一堆数组,定义如下:
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
感谢
答案 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
)