我正在通过php代码从excel表中读取。有些字段是可选的。当我使用该库时,我得到的结果就像这样
Array
(
[1] => Test123
[2] => None
[3] => Booster
[6] => Yes
[7] => Yes
[8] => 1
[9] => Unknown
[10] => 21
[11] => http://unknowm.com
)
在那里你可以看到缺少索引4和5,因为excel文件列中没有这些值。现在我必须将此数组与另一个具有命名索引的数组合并。第二个数组的长度是11.但是当我合并两个PHP错误产生说未定义索引4和5.我正在动态地工作,我被迫使用第二个数组的所有索引。我想第一个(来自excel)数组索引缺少用空字符串填充它之前到第二个。我怎样才能做到这一点?我希望我提供了很多信息。
答案 0 :(得分:4)
您可以使用array_fill
创建一个包含您希望结果具有的所有键的数组,并使用数组加法运算符添加原始数组中缺少的数组:
$firstIndexToEnsure = 1;
$lastIndexToEnsure = 11;
$defaults = array_fill($firstIndexToEnsure,
$lastIndexToEnsure - $firstIndexToEnsure + 1,
'');
$array += $defaults;
如果您需要按键对结果进行额外排序,请同时使用ksort
。
值得一提的是,无论您接受的用户输入是否只能部分覆盖某些默认值,此技术对非整数键也非常有效:
$params = array('color' => 'blue', 'size' => 'large');
$defaults = array(
'color' => 'red',
'size' => 'large',
'shape' => 'square',
'age' => 'old',
);
$params += $defaults;
答案 1 :(得分:2)
尝试这种方式:
$array = array(
0 => "a",
2 => "b",
4 => "b",
5 => "b",
6 => "b",
);
// 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;
var_dump($filled);
答案 2 :(得分:2)
完成第一个数组:
$lastindex = 11;
for($i=1; $i<=$lastindex; $i++)
if( !isset($array[$i] ))
$array[$i] = '';
现在您可以轻松地与第二个数组合并。