Php 干式-将一定数量的元素添加到数组的末尾,直到它';s计数达到特定整数

Php 干式-将一定数量的元素添加到数组的末尾,直到它';s计数达到特定整数,php,arrays,Php,Arrays,由于我使用的是一个相当旧的库,所以我需要将数组分为五块。因此,如果我的数组有9个元素,我需要将其分块(5和4),然后我需要在最后一个数组中添加一个空白元素,使其达到5 我写了一些非常糟糕的代码,但我知道它违背了枯燥的原则,因为它计算数量,并使用多个if语句将正确数量的空白元素推回到5 谁能告诉我应该如何分解此代码,以便将$chunkFive推送到数组中,直到它有5个元素 $blank = array("","","blank-image.png","",""); // create the bl

由于我使用的是一个相当旧的库,所以我需要将数组分为五块。因此,如果我的数组有9个元素,我需要将其分块(5和4),然后我需要在最后一个数组中添加一个空白元素,使其达到5

我写了一些非常糟糕的代码,但我知道它违背了枯燥的原则,因为它计算数量,并使用多个
if
语句将正确数量的空白元素推回到
5

谁能告诉我应该如何分解此代码,以便将
$chunkFive
推送到
数组中,直到它有5个元素

$blank = array("","","blank-image.png","",""); // create the blank image array
if(count($chunkFive) < 5){
    echo 'it contains less than five elements';
    if(count($chunkFive) == 4){
        echo 'insert one element'; // 4 present + array_push 1 = 5
        array_push($chunkFive,$blank);
    }else if(count($chunkFive) == 3){
        echo 'insert two elements'; // 3 present + array_push 2 = 5
        array_push($chunkFive,$blank);
        array_push($chunkFive,$blank);
    }else if(count($chunkFive) == 2){
        echo 'insert three elements'; // 2 present + array_push 3 = 5
        array_push($chunkFive,$blank);
        array_push($chunkFive,$blank);
        array_push($chunkFive,$blank);
    }else if(count($chunkFive) == 1){
        echo 'insert four elements';  // 1 present + array_push 4 = 5
        array_push($chunkFive,$blank);
        array_push($chunkFive,$blank);
        array_push($chunkFive,$blank);
        array_push($chunkFive,$blank);
    }
}else{
    echo 'it contains five elements'; // no need to adjust
    // do nothing
}
$blank=array(“,”,“blank image.png”,“,”);//创建空白图像数组
如果(计数($5)<5){
回声“它包含少于五种元素”;
如果(计数($5)==4){
echo“插入一个元素”;//存在4+数组_push1=5
数组推送($chunkFive,$blank);
}否则如果(计数($chunkFive)==3){
echo“插入两个元素”;//3当前+数组_push 2=5
数组推送($chunkFive,$blank);
数组推送($chunkFive,$blank);
}else if(计数($chunkFive)==2){
echo“插入三个元素”;//2当前+数组_push 3=5
数组推送($chunkFive,$blank);
数组推送($chunkFive,$blank);
数组推送($chunkFive,$blank);
}else if(计数($chunkFive)==1){
echo'insert four element';/1 present+array_push 4=5
数组推送($chunkFive,$blank);
数组推送($chunkFive,$blank);
数组推送($chunkFive,$blank);
数组推送($chunkFive,$blank);
}
}否则{
echo“它包含五个元素”;//无需调整
//无所事事
}

您可以尝试以下方法:

$blank = array("","","blank-image.png","",""); 
if(count($chunkFive) < 5){
    echo 'insert '.(5-count($chunkFive)).' element';
    while(count($chunkFive) < 5){
        array_push($chunkFive,$blank);
    }
} else{
    echo 'it contains five elements'; // no need to adjust
    // do nothing
}
$blank=array(“,”,“blank image.png”,“,”);
如果(计数($5)<5){
回显“插入”。(5计数($chunkFive))。“元素”;
同时(计数($5)<5){
数组推送($chunkFive,$blank);
}
}否则{
echo“它包含五个元素”;//无需调整
//无所事事
}

像这样的东西怎么样

$fixedLength = 5;
$delta = $fixedLength - count($chunkFive);
for ($i = 0; $i < $delta; $i++) {
    array_push($chunkFive,$blank);
}
$fixedLength=5;
$delta=$fixedLength-count($chunkFive);
对于($i=0;$i<$delta;$i++){
数组推送($chunkFive,$blank);
}
有了它,您甚至不需要
if(){}else{}
部分。如果数组长度为5,则不会运行循环,因为
$delta
将为
0

使用:

e、 g:


该函数从php 4开始就存在——使用内置函数通常是值得的,因为它们在大多数情况下都是经过优化的c实现。

删除所有条件:

$blank = array("","","blank-image.png","","");

for ($i = count($chunk5); $i < 5 ; $i++) {
    $chunk5[] = $blank;
}
$blank=array(“,”,“blank image.png”,“,”);
对于($i=count($chunk5);$i<5;$i++){
$chunk5[]=$blank;
}

我没有使用
array\u push
,因为它与一个新的数组位置相同,并且使用了更多的php指令(用于func调用)

琐碎:
while(count($chunkFive)我决不会想到搜索一个本机函数,谢谢!是的,但是OP使用
$blank
填充它们的数组,直到它有五个元素(所有类型均为数组)
[20] boris> $blank = ''; // easier to read ;-)
// ''
[21] boris> array_pad(array("one"), 5, $blank);
// array(
//   0 => 'one',
//   1 => '',
//   2 => '',
//   3 => '',
//   4 => ''
// )
[22] boris> 
$blank = array("","","blank-image.png","","");

for ($i = count($chunk5); $i < 5 ; $i++) {
    $chunk5[] = $blank;
}