数组需要10个元素(对于存储过程,期望10个值)。
用户可以提交少于10.在这种情况下,数组应该自动为剩余的任何内容创建空白元素。
变量最初是通过这样的帖子来的:
<?php
$containers = $_POST['cntnum']; // could be equal or less than 10, no more
$count = count($containers);
$remainder = 10 - $count;
// trying to loop and set remaining elements to ''
for($i = 0; $i < $remainder; $i++)
{
// this where I'm lost
}
?>
当我将变量发送到存储过程时,这就是变量的样子:
$sans = 'value1', 'value2', 'value3', '', '', '', '', '', '', '';
我正在尝试使用for循环将剩余的数组元素设置为&#39;&#39;。
也许我不需要for循环。也许还有另一种方式。我愿意接受建议。
我怎样才能做到这一点?
注意:我正在尝试完成以前的问题:stored procedure that accepts multiple parameters
答案 0 :(得分:2)
一般化答案,如果数组$values
的值小于10且您不想保留键/索引,则可以使用array_fill()
创建特定大小的数组填充占位符值,&#34;合并&#34;这与您的$values
使用array_replace()
; e.g:
<?php
$values = ['foo', 'bar', 'baz'];
$merged = array_replace(array_fill(0, 10, ''), $values);
print_r($merged);
收率:
Array
(
[0] => foo
[1] => bar
[2] => baz
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
)
参考
希望这会有所帮助:)
答案 1 :(得分:1)
您可以使用array_fill()
用空字符串填充其余索引。
答案 2 :(得分:1)
您可以添加新的&#34;空白&#34;像这样的数组:
$containers[] = '';
因此,如果将其放入for循环中,它会将指定数量的空白项添加到数组中。
答案 3 :(得分:1)
您只需要为数组键设置一个空值。
$containers = $_POST['cntnum']; // could be equal or less than 10, no more
$count = count($containers);
$remainder = 10 - $count;
// trying to loop and set remaining elements to ''
for ($i = 0; $i < $remainder; $i++) {
//if you don't specify a key, it uses the next available key.
$containers[] = "";
}
或者,如果您想摆脱循环,请使用array_pad。
使用array_pad:
$containers = array_pad($containers, 10, '');
答案 4 :(得分:0)
这正是array_pad
的目的:
<?php
$sans = ['value1', 'value2', 'value3'];
$padded = array_pad($sans, 10, '');
print_r($padded);
=
Array
(
[0] => value1
[1] => value2
[2] => value3
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
)