使用数组中的值作为switch-case键

时间:2014-03-22 01:13:24

标签: php switch-statement

我正在开发一款应用,而且我被卡住了。

我想在foreachswitch这样做:

<?PHP
$gtid = $_GET['id'];
// ID(key) => value
$dbs  = array(
    "ZTI10" => "Example1",
    "O1JTQ" => "Example2",
    "4V1OR" => "Example3"
);

switch($gtid){

foreach ($dbs as $key => $value) {

    case $key:
        echo "On ID $key is $value";
        break;

  }
}
?>

这甚至可能吗?或者还有其他方法可以做我想要的吗?

提前致谢。

3 个答案:

答案 0 :(得分:4)

如果甚至不需要循环

if (isset($dbs[$_GET['id']])) {
    echo sprintf('On ID %s is %s', $_GET['id'], $dbs[$_GET['id']]);
}

答案 1 :(得分:3)

不,你不能这样做。在if循环中使用简单的foreach语句代替:

foreach ($dbs as $key => $value) {
    if ($gtid == $key) {
        echo "On ID $key is $value";
        break;
  }
}

此处的break会导致执行立即跳出foreach循环,因此它不会评估数组的任何其他元素。

答案 2 :(得分:1)

没有

简单的方法:

<?php

$gtid = $_GET['id'];

$dbs  = array(
    "ZTI10" => "Example1",
    "O1JTQ" => "Example2",
    "4V1OR" => "Example3"
);

if ( isset($dbs[$gtid]) ) {
    echo "On ID $gtid is $dbs[$gtid]";
} else {
    // default
}

?>