出于可读性和性能原因,我想建立一个带有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
构建这样的数组 - 语句??
答案 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
)