PHP函数参数 - 未设置var的问题

时间:2010-03-22 20:28:49

标签: php function parameters

所以我显然不是一个非常优秀的程序员。我写了这个小函数:

function dispAdjuggler($atts) {
extract(shortcode_atts(array(
    'slot' => ''
), $atts)); 

$adspot = '';
$adtype = '';

// Get blog # we're on
global $blog_id;
switch ($blog_id) {
    case 1:
        // root blog HOME page
        if (is_home()) {
            switch ($slot) {
                case 'top_leaderboard':
                    $adspot = '855525';
                    $adtype = '608934';
                break;
                case 'right_halfpage':
                    $adspot = '855216';
                    $adtype = '855220';
                break;
                case 'right_med-rectangle':
                    $adspot = '858222';
                    $adtype = '613526';
                break;
                default:
                    throw new Exception("Ad slot is not defined");
                break;
            }

当我在这样的页面上引用该函数时:

<?php dispAdjuggler("top_leaderboard"); ?>

交换机抛出默认异常。我在这里做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

在不知道shortcode_atts()函数的作用的情况下,看起来你正在传入数组来设置默认值('slot'=空字符串),extract()然后转换为$short = ''

extract(shortcode_atts(array(
    'slot' => ''
), $atts)); 

正确?现在$ slot是空字符串,它不会匹配交换机中的任何情况,因此默认情况会被触发,这会引发“广告位未定义”异常。

答案 1 :(得分:0)

您是否错过了提取类型参数?

http://us.php.net/manual/en/function.extract.php