Помещение функции в эхо в PHP

мне просто интересно, как вы предполагаете поместить функцию в оператор эха?

function Catselect($abc){
global $category;
if($category == $abc){
echo 'selected ="selected"';
}
}

echo'
        <select style="width: 260px;" name="category">
        <option value="01" '.Catselect("01").'>Site Related</option>
        <option value="02" '.Catselect("02").'>Tournaments</option>
        <option value="03" '.Catselect("03").'>Articles</option>
        <option value="04" '.Catselect("04").'>Interviews</option>
        <option value="05" '.Catselect("05").'>General</option>
        </select>
        ';

Я пытаюсь создать страницу обновления, на которой вы сможете увидеть, какой была предыдущая категория, так что, допустим, перед этим категория — Турниры со значением 2. Если бы вы перешли на страницу обновления, категория турниров была бы быть выбран автоматически.

Но то, что я получаю, это просто слово selected = "selected" в верхней части моего заголовка.

Любая помощь ?


person Crays    schedule 10.12.2011    source источник
comment
Вместо того, чтобы печатать в своей функции, вы захотите вернуть значение. Если выбрана категория $abc, вы должны написать $return = "selected=\"selected\""; return $return; внутри оператора if функции.   -  person sooper    schedule 10.12.2011


Ответы (6)


Вместо echo 'selected ="selected"'; попробуйте return 'selected ="selected"';

person Lucas    schedule 10.12.2011

Замените echo в функции на return, должно работать.

Чтобы объяснить кратко, поскольку вы уже используете оператор echo в своем html для вывода элементов списка, вам нужно только возвращаемое значение в вашей функции, и предыдущее эхо позаботится о его печати.

person allaire    schedule 10.12.2011

Вам нужно return значение из функции, а не echo внутри функции. Что вы делаете, так это объединяете строку с возвращаемым значением функции, что совершенно нормально. Нравится:
'A random number: ' . rand(). Функция выполняется, и все, что возвращается из функции, объединяется со строкой. Если функция также выводит что-то сама по себе, это выводится во время вызова функции до того, как возвращаемое значение будет объединено со строкой.

person deceze♦    schedule 10.12.2011

Вместо того, чтобы печатать в своей функции, вы захотите вернуть значение. Если выбрана категория $abc, вы должны написать $return = "selected=\"selected\""; return $return; внутри оператора if функции.

person sooper    schedule 10.12.2011

Вместо

echo 'selected="selected"'; 

Do

return 'selected="selected"';

Это вернет строку и, в свою очередь, соединит ее с вашей выходной строкой.

Вы также можете использовать тернарные операторы вместо использования функции, например:

echo'
    <select style="width: 260px;" name="category">
    <option value="01" '.($category == "01" ? 'selected="selected"' : '').'>Site Related</option>
    <option value="02" '.($category == "02" ? 'selected="selected"' : '').'>Tournaments</option>
    <option value="03" '.($category == "03" ? 'selected="selected"' : '').'>Articles</option>
    <option value="04" '.($category == "04" ? 'selected="selected"' : '').'>Interviews</option>
    <option value="05" '.($category == "05" ? 'selected="selected"' : '').'>General</option>
    </select>
    ';
person user1091297    schedule 10.12.2011

Я уверен, что у кого-то будет более элегантное решение... но это сработает.

function Catselect($abc){
global $category;
$sel1 = ''; $sel2=''; $sel3=''; $sel4=''; $sel5 = '';
switch($abc) {
    case '01': $sel1='selected'; break;
    case '02': $sel2='selected'; break;
    case '03': $sel3='selected'; break;
    default:
    case '04': $sel4 = 'selected'; break;
    case '05': $sel5 = 'selected'; break;
}
return $sel1; return $sel2; return $sel3; return $sel4; return $sel5;
}


echo'
    <select style="width: 260px;" name="category">
    <option value="01" '.Catselect("01").' '.$sel1.'>Site Related</option>
    <option value="02" '.Catselect("02").' '.$sel2.'>Tournaments</option>
    <option value="03" '.Catselect("03").' '.$sel3.'>Articles</option>
    <option value="04" '.Catselect("04").' '.$sel4.'>Interviews</option>
    <option value="05" '.Catselect("05").' '.$sel5.'>General</option>
    </select>
    ';
person Scott    schedule 10.12.2011