需要帮助这个PHP功能

时间:2010-11-18 11:42:10

标签: php arrays function

这是我的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');

它无法正常工作,它应显示“活动服务器页面”

我正在犯的错误是什么?有人可以帮帮我吗?

3 个答案:

答案 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];

最好不要尝试保留默认值并重建逻辑。