出于可读性和性能方面的原因,我想用一个开关语句而不是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,它可能更易读,并且很可能更快地使用开关状态.,但是如何构造它??
$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,因为它不起作用--就像手册上说的:
在
语句中,条件只计算一次.PHP继续执行语句,直到开关块结束,或者第一次看到block语句为止。
无论如何,有人知道如何用switch-statement来构建这样一个数组?
发布于 2011-12-19 14:18:59
当然,你想要的东西可以更容易地使用。
$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压平
发布于 2011-12-19 14:18:05
好吧,开关语句看起来应该是:
编辑:上面的不工作-让我看看。
但是在这个例子中,您可以这样做:
$size = 2;
$array = range(1, $size); // Array ( [0] => 1 [1] => 2 )发布于 2011-12-19 14:19:44
$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
)...and,如果是4,你会得到:
Array
(
[0] => one
[1] => two
[2] => three
)https://stackoverflow.com/questions/8562597
复制相似问题