需要帮助PHP函数,当我通过变量传递值时它不起作用

时间:2010-11-21 21:17:55

标签: php function variables

这是一个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='') {

    global $values;

    if(!empty($id2)) {
        $title = $values[$id][$id2];
    }
    else {
         $title = $values[$id]; 
    }

    echo $title;

}

当我执行此<?php show(other,asp); ?>时,它显示活动的服务器页面并且它可以正常工作,但是当我这样做时它会显示错误

<?php

$lang = 'other,asp'

show ($lang);

?>

它不起作用。请在这里帮助我

P.S:如果我传递带有单个值的变量(没有逗号)

,它会起作用

6 个答案:

答案 0 :(得分:3)

您不能在一个字符串中传递两个变量。你的字符串$lang需要分成两个可用的字符串:

$lang1 = 'other';
$lang2 = 'asp';

show($lang1, $lang2);

答案 1 :(得分:3)

如果你想以你的方式传递它, 也许尝试使用爆炸:

function show($id='php') {

     global $values;
     $ids = explode(',',$id);

     if(!empty($ids[1])) {
         $title = $values[$ids[0]][$ids[1]];
     }
     else {
          $title = $values[$ids[0]]; 
     }

     echo $title;

}

答案 2 :(得分:2)

  

P.S:如果我传递带有单个值的变量(没有逗号)

,它会起作用

您正在为{other,asp'赋值$lang,然后将唯一的$lang变量传递给show函数。您的$values数组中没有名为“other,asp”的键。

在字符串中使用逗号并不意味着您要拆分参数,这意味着您传递的是单个字符串值。您“传递具有单个值的变量”,或者对多个参数值执行此操作:



$lang = "other";
$sub_lang = "asp";
show ($lang, $sub_lang);


答案 3 :(得分:2)

它失败,因为"other,asp"中不存在密钥$values

换句话说,它正试图评估以下内容:

$title = $values['other,asp'];

PS,提供实际错误而不是说“它不起作用”总是有用的。

答案 4 :(得分:2)

这是因为$ lang将被解释为单个参数,因此$ id2将是'other,asp'。您需要将它们分别传递给函数:

$id1 = 'other';
$id2 = 'asp';

show($id1,$id2);

答案 5 :(得分:0)

你要返回一个字符串而不是两个所需的字符串......如何重写你的函数来处理它们呢?