2017-07-21 95 views
0

該數組需要10個元素(對於存儲過程,期望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循環將剩餘的數組元素設置爲「'。

也許我不需要for循環。也許還有另一種方式。我樂於接受建議。

我該如何做到這一點?

注:我想在這裏完成我前面的問題:stored procedure that accepts multiple parameters

預先感謝您。

+2

在你的循環做'$容器[] = 「」; '這將基本上將下一個數組值設置爲空白。 – GrumpyCrouton

+0

@GrumpyCrouton - 顯示你的代碼工作。有人在下面提供了相同的答案。如果你創建一個,我會將你的標記標記爲已回答。 –

回答

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, ''); 
+0

謝謝,先生。這正是我所期待的。 –

+0

@JohnBeasley沒問題^。^。很高興我能幫上忙! – GrumpyCrouton

1

您可以使用array_fill()用空字符串填充其餘索引。

1

您可以添加一個新的「空白」項目這樣的陣列:

$containers[] = ''; 

所以,如果你把這個變成你的for循環,它會在指定的空白項目的量添加到陣列中。

2

一個普遍的答案,如果數組$values的值小於10,並且您不想保留鍵/索引,則可以使用array_fill()創建一個填充了佔位符值的特定大小的數組,並將「合併」這與你的$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] => 
) 

參考

希望這有助於:)

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