|
|
|
| Привет, есть небольшой скрипт, для его выполнения в файле пишу 20 строк кода которые отличаются только числами (просто у каждой переменной свое значение), чтобы выглядело все компактнее решил сделать цикл такого вида:
<?php
for ( $i=1; $i<=20; $i++) {
echo "<?php $color".$i."; ?> \n";
}
?>
|
Но вот беда, смотрю в код страницы и вижу что мои переменные выолнились но значение $i осталось, весь код как будто закомментирован:
<?php 1; ?>
<?php 2; ?>
<?php 3; ?>
<?php 4; ?>
<?php 5; ?>
...
|
можно ли как то вывести php код через echo ? но с условием что после вывода он выполнится по назначению... | |
|
|
|
|
|
|
|
для: tima2010
(11.08.2011 в 20:36)
| | Вы не сможете повторно интерпретировать PHP-код - он прогоняется только один раз. Нужно либо сразу формировать нужную вам функциональность, либо использовать eval(), либо переменные с двойным $$, либо использовать include. В общем вариантов довольно много. Что у вас находится в $color, какой функциональности хотите добиться? | |
|
|
|
|
|
|
|
для: cheops
(11.08.2011 в 20:50)
| | Добиться хочу такой глупости как сократить код средствами PHP
Оно мне не мешает просто очень интересно возможно ли такое
переменные color1,color2,color3...color20 содержат цвета которые выстраиваются в ряд (не спрашивайте для чего это нужно ))) просто есть такая задача ) суть не в этом а в том чтобы через PHP вывести PHP
или одной строкой PHP вывести 20 строк в которых отличаются лишь только цифры | |
|
|
|
|
|
|
|
для: tima2010
(11.08.2011 в 20:54)
| | В такой постановке, можно начать отталкиваться от следующего скрипта
<?php
for ( $i=1; $i<=20; $i++) {
$temp = "color$i";
echo $$temp;
}
?>
| Но вообще говоря, массивы по вашей задаче плачут :), с ними на порядок удобнее в циклах работать. | |
|
|
|
|
|
|
|
для: cheops
(11.08.2011 в 20:59)
| | Вот так вроде тоже работает но сами переменные как будто не работают
<?php
for ( $i=1; $i<=20; $i++) {
$peremenka "<?php $color".$i."; ?> \n";
eval ("\$peremenka = \"$peremenka\";");
}
?>
|
| |
|
|
|
|
|
|
|
для: tima2010
(11.08.2011 в 21:05)
| | Не очень понятно, особенно, вот эта строка - в ней пропущен знак равенства?
$peremenka "<?php $color".$i."; ?> \n";
|
PS Сложность будет нарастать, вы по сути уходите в сферу функционального программирования, для которой в языке нет поддержки. Лучше вместо 20 переменных $color1, ..., $color20 создать массив $color с 20 элементами, к которым вы сможете обращаться через $color[$i]. | |
|
|
|
|
|
|
|
для: cheops
(11.08.2011 в 21:11)
| | Все понял, невозможно в php выполнить php ))) массив не решает задачу, спасибо за отклик. | |
|
|
|
|
|
|
|
для: tima2010
(11.08.2011 в 21:13)
| | Да, нет от чего же, можно, просто не нужно использовать <?php и ?> в eval() - в него не передается HTML-код, поэтому нет надобности сообщать, где начинается и заканчивается PHP-код
<?php
for ( $i=1; $i<=20; $i++) {
eval ("echo \$color$i;");
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(11.08.2011 в 21:17)
| | понял, запомню а что делать если у меня такой код:
eval ("echo \$color$i = get_post_meta($post->ID, 'color$i', true); $colorfile$i = get_post_meta($post->ID, 'colorfile$i', true); $colorarray$i = wp_get_attachment_image_src($colorfile$i);"); // вырезка кода из wordpress темы
|
в данном случае он ругается на =
Parse error: syntax error, unexpected '=' in ....
|
| |
|
|
|
|
|
|
|
для: tima2010
(11.08.2011 в 21:25)
| | Если используете двойные кавычки, нужно экранировать символ $, или использовать одиночные кавычки, чтобы не экранировать $ (правда придется использовать двойные кавычки внутри строки-кода или экранировать одиночные кавычки).
eval ("echo \$color$i = get_post_meta(\$post->ID, 'color$i', true); \$colorfile$i = get_post_meta(\$post->ID, 'colorfile$i', true); \$colorarray$i = wp_get_attachment_image_src(\$colorfile$i);");
|
| |
|
|
|
|
|
|
|
для: cheops
(11.08.2011 в 21:30)
| | спасибо cheops !!! все работает! | |
|
|
|
|
|
|
|
для: tima2010
(11.08.2011 в 21:32)
| | Еще бы ;) | |
|
|
|