Конкатенация динамического целочисленного значения в функции php

0

Я пытаюсь напечатать динамические значения и использовать это для использования foreach(). Вот код, который я пытаюсь сделать. Это оригинальный код, для которого я должен его интегрировать и сделать динамическим, чтобы цикл выполнялся 4 раза. Мне нужно изменить print_static_1_container на print_static_ $ i_container.

 <?php
    if(!function_exists('print_static_1_container')) {
        function print_static_1_container() {

Это код, который я пытаюсь сделать:

    <?php
 for($i=1;$i<=4;$i++) {
    $function = create_function('$i', 'echo "print_static_{$i}_container";');

    function $function() {
    global $SITE; ?>

    <!-- Static 1 Container -->
    <!-- ********************************************* START ************************************************* -->
    <div class="static-<?php echo $i; ?>-home">
        <div class="row">
                <div class="gal-head home-section-head">
            <?php
            if(isset($SITE['theme_options']->static_$i_html_content) && !empty($SITE['theme_options']->static_$i_html_content))
                echo $SITE['theme_options']->static_$i_html_content;
            ?>
            </div>
        </div>
    </div>

    <?php
        }
    }


?>

Ошибка, которую я получаю

неожиданным ". в строке функция print_static _. '$ i'._ container()

Теги:
for-loop

2 ответа

0

Должно быть:

 $function_name = "print_static_$i_container";
 if(!function_exists($function_name)) {
 $function_name = function() {
    // do stuff
 };

Вы можете вызвать эту функцию следующим образом: $ function_name();

Вы можете использовать переменные только в двойных кавычках. PHP интерпретирует все строки с одним кавычком точно так, как они появляются, то есть значение, хранящееся в переменной, не заменяется в строке.

  • 0
    Не говоря уже о том, что вы также должны позаботиться о закрывающих скобках.
  • 0
    Я получаю эту ошибку: синтаксическая ошибка, неожиданный «$ function_container» (T_VARIABLE), ожидаемый идентификатор (T_STRING) или «(» в> функции $ function_container ()
Показать ещё 2 комментария
0

проиллюстрируйте этот пример, возможно, это то, что вы хотите. Используйте create_function() для создания динамических функций.

for($i=1;$i<=4;$i++) {
    $function = create_function('$i', 'echo "Calling function with argument {$i} \n";');

    // Lets Call last created function
    $function($i);
}

DEMO

Альтернативное решение PHP 5.3.x

for($i=1;$i<=4;$i++) {

    $functionName = "print_static_{$i}_container";
    $$functionName = function($args) { ?>

<!-- Static 1 Container -->
<!-- ********************************************* START ************************************************* -->
<div class="static-<?php echo $args; ?>-home">
    <div class="row">
            <div class="gal-head home-section-head">
        <?php
        if(isset($SITE['theme_options']->static_$args_html_content) && !empty($SITE['theme_options']->static_$i_html_content))
            echo $SITE['theme_options']->static_$args_html_content;
        ?>
        </div>
    </div>
</div>

<?php };

  $print_static_$i_container($i);
}

$print_static_3_container(3);    // Output: Calling 3
$print_static_2_container(2);    // Output: Calling 2
  • 0
    Таким образом, согласно моему коду, я должен повторить «print_static_ {i} _container» ???
  • 0
    Это ошибка, которую я получаю в syntax error, unexpected '$function' (T_VARIABLE), expecting identifier (T_STRING) or '(' $ function ($ i) функции line syntax error, unexpected '$function' (T_VARIABLE), expecting identifier (T_STRING) or '('
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню