Обращение к функции

335
25 декабря 2016, 22:43

Функция содержит конструкцию из нескольких строк echo. Строки будут выводится по 2, поэтому разделены на блоки.

Функция:

function add_block() {
$text1 = 'текст1';
$text2 = 'текст2';
// блок 1
echo '<p class="block-one">' . $text1 . '</p>' . "\n";
echo '<p class="block-two">' . $text2 . '</p>' . "\n";
// блок 2
echo '<p class="block-three">' . $text1 . '</p>' . "\n";
echo '<p class="block-four">' . $text2 . '</p>' . "\n";
// блок 3
echo '<p class="block-five">' . $text1 . '</p>' . "\n";
echo '<p class="block-six">' . $text2 . '</p>' . "\n";
}

Что нужно сделать чтобы вывести строки из функции?

Например я пишу <?php echo add_block($blockone); ?> и вывелись строки только из первого блока.

// блок 1
echo '<p class="block-one">' . $text1 . '</p>' . "\n";
echo '<p class="block-two">' . $text2 . '</p>' . "\n";

<?php echo add_block($blocktwo); ?> - из второго блока и т.д...

Answer 1
function addBlock($block){
    switch((int)$block){
        case 1:
            $out = '<p class="block-one">' . $text1 . '</p>' . "\n";
            $out .= '<p class="block-two">' . $text1 . '</p>' . "\n";
        break;
        case 2:
            $out = '<p class="block-three">' . $text1 . '</p>' . "\n";
            $out .= '<p class="block-four">' . $text1 . '</p>' . "\n";
        break;
        default:
            $out = '<p class="error">Unknown block</p>' . "\n";
        break;
    }
    //echo $out;
    return $out;
}
//addBlock(1);
echo addBlock(1);
//Раскомментить для выбора способа вывода
//Неплохой способ, если нужно обрабатывать исключения
function addBlock($block){//Более приятный способ, без кейсов и громоздкого синтаксиса
    $out = array(
        1 => "<p class=\"block-one\">$text1</p>\n
              <p class=\"block-two\">$text2</p>\n",
        2 => "<p class=\"block-three\">$text3</p>\n
              <p class=\"block-four\">$text4</p>\n",
    );
    return array_key_exists($block,$out) ? $out[$block] : FALSE ;//Проверяем есть ли такой блок в массиве, и возвращаем, если есть, либо кидаем FALSE
}
Answer 2

1) Почитать об условных операторах.

2) Не забыть что если вы выводите (вызываете echo) внутри функции, то этого не нужно делать для самой функции.Либо функция должна возвращать строку

public function string_by_condition($cond){
    var str = '';
    if($cond== 1){
        str .='Строка 1';
        str .='Строка 2';   
    } else if($cond==2) {
        str .='Строка 3';
        str .='Строка 4';
    } else {...}
    return $str
}
echo string_by_condition(1);

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

public function createBlcok($class1,$class2,text1,text2){
    return  "<p class=\"$class1\">$text1</p><p class=\"$class2\">$text2</p>";
}
READ ALSO
URL роутинг на PHP

URL роутинг на PHP

Начал разбираться в MVC PHP, после множества прочитанных статей и просмотренных видео уроков накатал каркас своего приложения(Сразу попрошу...

479
Отслеживать посещения по IP

Отслеживать посещения по IP

Как на PHP сделать подсчет посещений по iP? На сайте есть задание, которое можно выполнить не более 5 раз, и нужно чтобы при входе с помощью $_SERVER["REMOTE_ADDR"];...

372
установка sleeping-owl на Laravel

установка sleeping-owl на Laravel

php artisan admin:install Copied Directory [\vendor\sleeping-owl\admin\src\migrations] To [\database\migrations] Copied Directory [\vendor\sleeping-owl\admin\public] To [\public\packages\sleeping-owl\admin] Publishing complete for tag []! [PDOException]...

610