Я пытаюсь напечатать динамические значения и использовать это для использования 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()
Должно быть:
$function_name = "print_static_$i_container";
if(!function_exists($function_name)) {
$function_name = function() {
// do stuff
};
Вы можете вызвать эту функцию следующим образом: $ function_name();
Вы можете использовать переменные только в двойных кавычках. PHP интерпретирует все строки с одним кавычком точно так, как они появляются, то есть значение, хранящееся в переменной, не заменяется в строке.
проиллюстрируйте этот пример, возможно, это то, что вы хотите. Используйте 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);
}
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
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 '('