我有一个像这样的数组,缺少键:
array(2) {
[0]=>
string(4) "Bill"
[2]=>
string(13) "billy@kid.com"
}
Run Code Online (Sandbox Code Playgroud)
如何使用空字符串作为值添加缺失的键?我希望这样做:
array(3) {
[0]=>
string(4) "Bill"
[1]=>
string(0) ""
[2]=>
string(13) "billy@kid.com"
}
Run Code Online (Sandbox Code Playgroud)
你的问题很模糊,很难理解你想要什么,从我的解释来看,你似乎想要一个键插入数组,沿着索引线移动当前键.
你可能想尝试这样的事情:
function cleanArray(&$array)
{
end($array);
$max = key($array); //Get the final key as max!
for($i = 0; $i < $max; $i++)
{
if(!isset($array[$i]))
{
$array[$i] = '';
}
}
}
cleanArray($array);
Run Code Online (Sandbox Code Playgroud)
与Rinuwise的答案类似:
$t = array( 0 => "Bill",
2 => "billy@kid.com"
);
$u = $t + array_fill_keys( range(min(array_keys($t)),
max(array_keys($t))
),
''
);
ksort($u);
var_dump($u);
Run Code Online (Sandbox Code Playgroud)
如果要自动设置空键,则可以执行此操作
$keys = array_keys($array);
$maxkey = end($keys); // it will fill only the values between 0 and last key
for ($i = 0; $i < $maxkey; $i++) {
if (!array_key_exists($i, $array)) {
$array[$i] = '';
}
}
Run Code Online (Sandbox Code Playgroud)
这里有一个不同的答案,如何通过利用数组求和运算符而无需循环.
<?php
$array = array(
0 => "Bill",
2 => "billy@kid.com",
);
// If min and max are static, use numbers instead of getting them from the array
$keys = array_keys($array);
$all = array_fill(min($keys), max($keys) - min($keys) + 1, "");
$filled = $array + $all;
// If you want keys in order
ksort($filled);
var_dump($filled);
Run Code Online (Sandbox Code Playgroud)