Нужна помощь с функцией PHP, она не работает, когда я передаю значение переменной - PullRequest
1 голос
/ 22 ноября 2010

Вот функция 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 ]

3 голосов
/ 22 ноября 2010

Если вы хотите передать это так, как у вас есть, возможно попробуйте использовать explode:

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;

}
3 голосов
/ 22 ноября 2010

Вы не можете передать две переменные в одну строку.Ваша строка $lang должна быть разбита на две переменные:

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

show($lang1, $lang2);
2 голосов
/ 22 ноября 2010

Это потому, что $ lang будет интерпретироваться как один аргумент, поэтому $ id2 будет 'other, asp'. Вам нужно передать их в функцию отдельно:

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

show($id1,$id2);
2 голосов
/ 22 ноября 2010

Сбой, потому что ключ "other,asp" не существует в $values.

Другими словами, он пытается оценить следующее:

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

PS, этовсегда полезно указывать фактическую ошибку, а не говорить «это не работает».

2 голосов
/ 22 ноября 2010

P.S: Это работает, если я передаю переменную с одним значением (без запятых)

Вы присваиваете $lang значению 'other, asp', а затем передаете эту единственную переменную $lang в функцию show. В вашем массиве $values нет ключа с именем "other, asp".

Наличие запятой в строке не означает, что вы разделяете параметры, это означает, что вы передаете одно строковое значение. У вас есть , чтобы «передать переменную с одним значением» или сделать это следующим образом для нескольких значений параметра:



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


0 голосов
/ 22 ноября 2010

Вы возвращаете одну строку вместо двух требуемых ... как насчет переписать вашу функцию, чтобы обработать их вместо этого?

...