假如,你有一堆铅笔,有 红,黄,蓝 三种颜色,你想要知道每一个颜色的笔的数量是多少,会怎么写呢?看下面:
<?php
$pen = ["红","蓝","蓝","红","红","蓝","红","蓝","红","红","红","蓝","红","黄","蓝","其他","其他"]; // 所有的铅笔
$redNum = 0; // 红色铅笔数
$yellowNum = 0; // 黄色铅笔数
$blueNum = 0; // 蓝色铅笔数
$otherNum = 0;
foreach ($pen as $val){
if($val=="红"){
$redNum++;
}else if($val=="黄"){
$yellowNum++;
}else if($val=="蓝"){
$blueNum++;
}else{
$otherNum++;
}
}
echo "红色铅笔数:".$redNum.PHP_EOL;
echo "黄色铅笔数:".$yellowNum.PHP_EOL;
echo "蓝色铅笔数:".$blueNum.PHP_EOL;
echo "其他颜色铅笔数:".$otherNum.PHP_EOL;
?>
以下会输出:
红色铅笔数:8
黄色铅笔数:1
蓝色铅笔数:6
其他颜色铅笔数:2
如果有100多种颜色的话,怎么办?难道写100个if和else判断么?当然不行,那样写下来,代码太不容易理解了,看下面的例子:
<?php
$pen = ["红","蓝","蓝","红","红","蓝","红","蓝","红","红","红","蓝","红","黄","蓝","其他","其他"]; // 所有的铅笔
$redNum = 0; // 红色铅笔数
$yellowNum = 0; // 黄色铅笔数
$blueNum = 0; // 蓝色铅笔数
$otherNum = 0;
foreach($pen as $val)
{
switch($val)
{
case "红":
$redNum++;
break;
case "黄":
$yellowNum++;
break;
case "蓝":
$blueNum++;
break;
default:
$otherNum++;
break;
}
}
echo "红色铅笔数:".$redNum.PHP_EOL;
echo "黄色铅笔数:".$yellowNum.PHP_EOL;
echo "蓝色铅笔数:".$blueNum.PHP_EOL;
echo "其他颜色铅笔数:".$otherNum.PHP_EOL;
?>
输出:
红色铅笔数:8
黄色铅笔数:1
蓝色铅笔数:6
其他颜色铅笔数:2
和上面的输出一样。
注:switch($val)表示取出$val的值,case “红”:表示$val如果是”红”,default:表示没有匹配到的红,黄,蓝的其他选项的情况