Ввод функции в эхо в PHP - PullRequest
       19

Ввод функции в эхо в PHP

0 голосов
/ 10 декабря 2011

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

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, если вы перейдете на страницу обновления, категория турнира будет выбрана автоматически.

Но я получаю только выбранное слово =«выбрано» в верхней части моего заголовка.

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

Ответы [ 6 ]

2 голосов
/ 10 декабря 2011

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

1 голос
/ 10 декабря 2011

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

1 голос
/ 10 декабря 2011

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

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

0 голосов
/ 10 декабря 2011

вместо

echo 'selected="selected"'; 

У

return 'selected="selected"';

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

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

* * 1010
0 голосов
/ 10 декабря 2011

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

0 голосов
/ 10 декабря 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>
    ';
...