【发布时间】:2011-12-19 14:14:04
【问题描述】:
出于可读性和性能的原因,我想使用 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 结束 块,或者它第一次看到一个 break 语句。
无论如何,有人知道如何使用switch-statement 构建这样的数组吗??
【问题讨论】:
-
使用您编写的代码,在任何情况下您都将在第一个 if 语句中输入,因为如果您的 size=2 或 3 或更大,第一个 if 将为真。你为什么不做一些更简单的事情,比如: $array[] = $size;而不是那些 if?
-
@Marco Pace 数组的内容只是一个例子,实际上我里面还有其他的值...我会改变我的例子,让它更清楚...
-
$size = 3+ 将匹配所有条件。 $size = 2 将匹配条件 1 和 2。$size = 1 将仅匹配条件 1,$size = 0 将不匹配任何条件。这是你想要的吗?
标签: php arrays if-statement switch-statement