|
|
|
| Есть некий код, записанный в виде строки и хранящийся в переменной $kod_2
На дисплей этот код выводится в таком виде
<?php
echo $kod_2 ;
' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
|
Этот код используется в цикле с оператором eval и получается вот что:
<?php
for($ii[0] = 0; $ii[0] < 4; $ii[0]++)
for($ii[1] = 0; $ii[1] < 4; $ii[1]++)
for($ii[2] = 0; $ii[2] < 3; $ii[2]++)
for($ii[3] = 0; $ii[3] < 3; $ii[3]++)
for($ii[4] = 0; $ii[4] < 4; $ii[4]++)
{
eval($kod_2);
echo "<br>", $kod_2;
}
|
В итоге я получаю на дисплее список в виде
' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
|
Перепробовал всякое, но отладить исполнение этого кода не удается... | |
|
|
|
|
|
|
|
для: Владимир55
(07.10.2009 в 23:16)
| |
eval("\$x=$kod_2;");
echo "<br>", $x;
|
| |
|
|
|
|
|
|
|
для: Trianon
(07.10.2009 в 23:37)
| | Выводит тоже самое, только без кавычек и точки с запятой в конце:
$content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]]
|
| |
|
|
|
|
|
|
|
для: Владимир55
(07.10.2009 в 23:48)
| | не верю.
Вообще-то я проверил перед тем, как постить ответ.
Массив $content пришлось создать за свой счет. | |
|
|
|
|
|
|
|
для: Trianon
(07.10.2009 в 23:53)
| | Дык чего же делать-то?
Я могу скриншот прислать, заверенный у нотариуса (шутка).
Может, какая еще причина? Как поискать её?
Работаю на Денвере, версия рнр 4 (наверное). | |
|
|
|
|
|
|
|
для: Владимир55
(08.10.2009 в 00:10)
| |
<?php
for($a = 0; $a < 5; $a++) for($b = 0; $b < 5; $b++) $content[$a][$b] = chr(ord('A')+$a*5+$b);
$kod_2 = ' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
for($ii[0] = 0; $ii[0] < 4; $ii[0]++)
for($ii[1] = 0; $ii[1] < 4; $ii[1]++)
for($ii[2] = 0; $ii[2] < 3; $ii[2]++)
for($ii[3] = 0; $ii[3] < 3; $ii[3]++)
for($ii[4] = 0; $ii[4] < 4; $ii[4]++)
{
eval("\$x=$kod_2;");
echo "<br>", $x;
}
?>
|
Присылайте. Можно без заверения. аттачем. | |
|
|
|
|
|
|
|
для: Trianon
(08.10.2009 в 00:13)
| | Это работает!
Как же найти ошибку?!! | |
|
|
|
|
|
|
|
для: Владимир55
(08.10.2009 в 00:19)
| | Вообще лучше отказать от использования eval() вообще - сложность поиска ошибок в коде усложняется с ним в разы. А задачу которую вы выполняете можно осуществить без него. | |
|
|
|
|
|
|
|
для: cheops
(08.10.2009 в 00:21)
| | Типа eval заменить на $$ ? | |
|
|
|
|
|
|
|
для: Владимир55
(08.10.2009 в 00:22)
| | нет... вернуть логику алгоритма из секции данных в секцию программного кода. | |
|
|
|
|
|
|
|
для: Владимир55
(08.10.2009 в 00:22)
| | А почему следующий код не подходит?
<?php
for($a = 0; $a < 5; $a++) for($b = 0; $b < 5; $b++) $content[$a][$b] = chr(ord('A')+$a*5+$b);
for($ii[0] = 0; $ii[0] < 4; $ii[0]++)
for($ii[1] = 0; $ii[1] < 4; $ii[1]++)
for($ii[2] = 0; $ii[2] < 3; $ii[2]++)
for($ii[3] = 0; $ii[3] < 3; $ii[3]++)
for($ii[4] = 0; $ii[4] < 4; $ii[4]++)
{
echo $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ;
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(08.10.2009 в 00:26)
| | Конечно же, он подходит.
Ньанс в том, что это частный случай. А вообще код формируется скриптом в зависимрсти от задания. | |
|
|
|
|
|
|
|
для: Владимир55
(08.10.2009 в 00:19)
| | процитируйте строго, что выводит у Вас оператор echo $kod_2 ; | |
|
|
|
|
|
|
|
для: Trianon
(08.10.2009 в 00:22)
| | Вот это:
' $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ';
|
| |
|
|
|
|
|
|
|
для: Владимир55
(08.10.2009 в 00:25)
| | Одиночные кавычки и точку с запятой тоже? | |
|
|
|
|
|
|
|
для: cheops
(08.10.2009 в 00:27)
| | Да, то же. | |
|
|
|
|
|
|
|
для: Владимир55
(08.10.2009 в 00:28)
| | Если я в цикле (без eval) пишу
echo "<br>", $content[0][$ii[0]] . $content[1][$ii[1]] . $content[2][$ii[2]] . $content[3][$ii[3]] . $content[4][$ii[4]] ;
|
то получаю
Пришла пора чтоб истинный мудрец
Пришла пора чтоб истинныймудрый человек
Пришла пора чтоб истинныйфилософ
Пришла пора чтоб истинныймыслитель
Пришла пора чтобдействительный мудрец
Пришла пора чтобдействительныймудрый человек
То есть, массив функционирует нормально... | |
|
|
|
|
|
|
|
для: Владимир55
(08.10.2009 в 00:28)
| | Тогда никакого результат не должно быть - в одиночных кавычках переменные не интерполируются, а выводятся как есть. Нужно избавиться от одиночных кавычек. | |
|
|
|
|
|
|
|
для: Владимир55
(08.10.2009 в 00:25)
| | Это не является оператором языка.
Тогда разве так:
eval('$x='.trim($kod_2, "'").';');
echo "<br>", $x;
|
Через двойной eval тоже можно, если ставить целью уровень изврата загнать под потолок. | |
|
|
|
|
|
|
|
для: Trianon
(08.10.2009 в 00:35)
| | "уровень изврата загнать под потолок"
Это прямо в точку! Это про меня! Что есть, то есть!
Одинарные кавычки я добавлял специально, найдя в сети какой-то пример, ибо в каконической форме оператор не пошел.
Это добавление убрал, кавычки исчезли вообще (нет ни одинарных, ни двойных), и всё заработало!
Большое спасибо! | |
|
|
|