我正在尝试编写一个脚本,使用switch statement
在数组键中显示每个值,这是我的简单代码:
<?php
$char = array('A'=>'01', 'B'=>'02', 'C'=>'03', 'D'=>null);
foreach($char as $letter => $number)
{
switch($char[$letter])
{
case 'A':
echo $number;
break;
case 'B':
echo $number;
break;
case 'C':
echo $number;
break;
case 'D':
echo $number;
break;
default:
echo 'LETTER '.$letter.' is empty';
}
}
?>
问题:
它不会打印存储在数组中的值。
预期输出:
如果 A 存在,则返回 01 。 。 。 。 。 。 。等等。但是,如果数组键包含空值,则返回'LETTER D为空'
有什么帮助吗?谢谢
答案 0 :(得分:6)
使用switch($letter)
代替switch($char[$letter])
。 PHP foreach循环将您的数组拆分为 $ letter =&gt; A 和 $ number =&gt; 01
$char = array('A'=>'01', 'B'=>'02', 'C'=>'03', 'D'=>null);
foreach($char as $letter => $number)
{
switch($letter)
{
case 'A':
echo $number;
break;
case 'B':
echo $number;
break;
case 'C':
echo $number;
break;
case 'D':
if($number=='' || is_null($number)){
echo 'LETTER '.$letter.' is empty';
}else{
echo $number;
}
break;
default:
echo 'LETTER '.$letter.' is empty';
}
}
OR
$char = array('A'=>'01', 'B'=>'02', 'C'=>'03', 'D'=>null);
foreach($char as $letter => $number)
{
CheckNumber($letter, $number);
}
function CheckNumber($letter, $number){
if($number=='' || is_null($number)){ // add whatever condition you want to check
echo 'LETTER '.$letter.' is empty';
}else{
echo $number;
}
}
答案 1 :(得分:0)
替换
switch($char[$letter]) as switch($letter)
答案 2 :(得分:0)
您正在使用该数组索引中的值,而不是索引。试试这个。
switch($letter)
{
case 'A':
echo $number;
break;
case 'B':
echo $number;
break;
case 'C':
echo $number;
break;
case 'D':
echo $number;
break;
default:
echo 'LETTER '.$letter.' is empty';
}
答案 3 :(得分:0)
试试这个:它会给出答案:LETTER D为空(默认只在没有条件时才执行,如果你想输出“字母D为空”那么你必须要字母匹配情况下的代码。这里,情况D匹配,但只有代码来回显数字,并且数组中的D没有数字分配,所以t什么都没有显示。)
$char = array('A'=>'01', 'B'=>'02', 'C'=>'03', 'D'=>null);
foreach($char as $letter => $number)
{
switch($letter)
{
case 'A':
if($number==null)
{
echo "LETTER ".$letter."is empty";
}
else
{
echo $number;
}
break;
case 'B':
if($number==null)
{
echo "LETTER ".$letter."is empty";
}
else
{
echo $number;
}
break;
case 'C':
if($number==null)
{
echo "LETTER ".$letter."is empty";
}
else
{
echo $number;
}
break;
case 'D':
if($number==null)
{
echo "LETTER ".$letter."is empty";
}
else
{
echo $number;
}
break;
default:
echo 'LETTER '.$letter.' is empty';
}
}
答案 4 :(得分:0)
/// This is what I did ...
$i = (isset($somevalue))? $somevalue : NULL; /// where $somevalue could be GET or POST ..or whatever
$x = array(NULL=>'','monkey'=>'brown','baseball'=>'round','key3'=>'value3');
$x['brisket'] = 'good'; // if you wanted to add another value...
$x['pickles'] = 'notSoGood'; // if you wanted to add another value...
/// uncomment below to view your array values
// echo '<pre>';
// var_dump($x);
// echo '<pre>';
switch($i){
case $i:
echo 'my value'.$x[$p];
//include_once $x[$p];
break;
default:
echo 'default value';
//include_once $somedefault;
}