这是我的PHP代码
$values = array(
'php' => 'php hypertext processor',
'other' => array(
'html' => 'hyper text markup language',
'css' => 'cascading style sheet',
'asp' => 'active server pages',
)
);
function show($id='php', $id2='others') {
global $values;
if(isset($id2)) {
$title = $values[$id];
}
elseif(empty($id2)) {
$title = $values[$id][$id2];
}
return $title;
}
当我做的时候
echo show('php');
显示“php超文本处理器”
但是当我做的时候
echo show('other','asp');
它无法正常工作,它应显示“活动服务器页面”
我正在犯的错误是什么?有人可以帮帮我吗?
答案 0 :(得分:3)
你正在以错误的方式进行检查。
此外,empty
调用有点多余。我会推荐这个:
if(!empty($id2)) {
$title = $values[$id][$id2];
}
else {
$title = $values[$id];
}
答案 1 :(得分:1)
我怀疑你总是进入if语句的第一部分,因为你在函数声明中为$ id2设置了一个默认值,你的逻辑稍微有点不对劲。尝试:
function show($id='php', $id2) {
global $values;
if(isset($id2)) {
$title = $values[$id][$id2];
}
elseif(empty($id2)) {
$title = $values[$id];
}
return $title;
}
这样,如果设置了$ id2,那么它应该从第二个数组中拉出来,如果为空,则默认为第一个。
答案 2 :(得分:0)
我相信你的基本逻辑是错误的:看看你是否用默认值设置这两个变量,这是urs的逻辑。
if(isset($id2)) {
$title = $values[$id];
}
elseif(empty($id2)) {
$title = $values[$id][$id2];
}
归结为
$title = $values[$id];
最好不要尝试保留默认值并重建逻辑。