使用switch语句创建/添加数组

时间:2011-12-19 14:14:04

标签: php arrays if-statement switch-statement

出于可读性和性能原因,我想建立一个带有switch语句而不是if-statements的数组。

考虑以下if语句:

$size = 2;
$array = array();
if($size >= 1) { array_push($array,'one','foo'); }
if($size >= 2) { array_push($array,'two','bar','barista'); }
if($size >= 3) { array_push($array,'three','zoo','fool','cool','moo'); }

它基本上从1计算到$size,它可能更具可读性,并且很可能使用switch-statment更快...... 但是你如何构造它?

$step = 2;
$array = array();
switch($step)
{
    case ($step>1): array_push($array,'one','foo');
    case ($step>2): array_push($array,'two','bar','barista');
    case ($step>3): array_push($array,'three','zoo','fool','cool','moo');
}

我试图省略break,这不起作用 - 正如手册所说:

  

在switch语句中,条件仅评估一次[...]。   PHP继续执行语句,直到切换结束   阻止,或者第一次看到中断语句。

无论如何,任何人都知道如何使用switch构建这样的数组 - 语句??

3 个答案:

答案 0 :(得分:4)

当然,使用

可以更轻松地实现您的目标
$array=range(1,$size);

基于进一步的评论和后续编辑,如:

$baseArray = $array(array('one'),
                    array('two','twoA'),
                    array('three','threeA','threeB'),
                    array(),
                    array('five'),
                   );
$step=2;
$array = array_slice($baseArray,0,$step);

然后展平$ array

答案 1 :(得分:1)

好吧,switch语句看起来像:

编辑:以上不起作用 - 让我来看看。

但是在这个例子中,您可以这样做:

$size = 2;
$array = range(1, $size); // Array ( [0] => 1 [1] => 2 )

答案 2 :(得分:1)

$valuesIWant = array(1=>'one','two','three','four');
$array = array();
for ($i = $step - 1; $i > 0; $i--) $array[] = $valuesIWant[$i];
$array = array_reverse($array);

因此,如果$step为2,则获得:

Array
(
    [0] => one
)

...如果它是4,你得到:

Array
(
    [0] => one
    [1] => two
    [2] => three
)