如果不创建空白元素,请检查数组是否包含10个元素

时间:2017-07-21 16:47:07

标签: php arrays stored-procedures

数组需要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

5 个答案:

答案 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] => 
)