这是一个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:如果我传递带有单个值的变量(没有逗号)
,它会起作用答案 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)
你要返回一个字符串而不是两个所需的字符串......如何重写你的函数来处理它们呢?