Нужна помощь с этой функцией PHP - PullRequest
0 голосов
/ 18 ноября 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='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 ]

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

Вы делаете проверку неправильно.

Кроме того, вызов empty несколько избыточен. Я бы порекомендовал это:

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

    }
    else {
       $title = $values[$id]; 
    }
1 голос
/ 18 ноября 2010

Я подозреваю, что вы всегда вводите первую часть своего оператора 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, оно должно извлекаться из второго массива и по умолчанию к первому, если оно пустое.

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

Ну, я считаю, что ваша фундаментальная логика неверна: посмотрите, если вы устанавливаете обе переменные со значением по умолчанию, эта логика urs ..

 if(isset($id2)) {
    $title = $values[$id];
}
elseif(empty($id2)) {
    $title = $values[$id][$id2];
}

сводится к

$title = $values[$id];

Лучше старайтесь не сохранять значения по умолчанию и перестраивать логику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...