动态添加元素到数组

时间:2013-01-07 01:06:43

标签: php arrays recursion

我有一个包含动态数量元素的数组(它是用户生成的单词列表)。

我希望能够随时将数组元素除以3:

我的想法是计算数组中的元素(使用count($myArray)),如果模数!= 0,我会递归添加元素直到它。

这是我的代码:

function adjustArray($myArray, $lineLimit = 3){
    $count = count($myArray);

    if ($count % $lineLimit != 0):
        $myArray[] = '';
        adjustArray($myArray, $lineLimit);

    else:
        return $myArray; //problem when returning is conditional (return won't work - returns NULL
    endif;

}

如何修复此代码,或者更好的是,如何更有效地执行此操作?

2 个答案:

答案 0 :(得分:1)

在while循环中执行此操作,这样您就不会有进行函数调用的开销。

while(count($myArray) % $lineLimit !=0){
  $myArray[] = '';
}

答案 1 :(得分:1)

这里不需要递归。只需添加所需元素的数量,以使长度为3的倍数:

function adjustArray($myArray, $lineLimit = 3){
    $count = count($myArray);

    if ($count % $lineLimit != 0){
        for($i = 0; $i < $lineLimit - $count % $lineLimit; $i++)
            $myArray[] = "";
    }   

    return $myArray;
}

以下是演示:http://codepad.org/6viL1peq

或者,您可以使用:

$myArray = array_merge($myArray, array_fill(0, $lineLimit - $count % $lineLimit, ""));

而不是循环,使其更快。

可以找到这种方法的演示here