@Zorgios

Как с помощью eval создавать переменные на ходу?

Есть массив вида
<?$lines = array (
  0 => 
  array (
    'number' => 1,
    'x1' => '$const1',
    'x2' => '$x1_1+5+$l+$w+$h',
    'y1' => '$const1',
    'y2' => '$y1_1+7',
  ),
  1 => 
  array (
    'number' => 2,
    'x1' => '$x2_1',
    'x2' => '$x1_2+$const2',
    'y1' => '$y2_1',
    'y2' => '$y1_2+$const2',
  ),
  2 => 
  array (
    'number' => 3,
    'x1' => '$x2_2',
    'x2' => '$x1_3+$const3,
    'y1' => '$y2_2',
    'y2' => '$y1_3+$const3',
  )
);?>


Как, используя данные из массива, создать на их основе рабочий кусок кода вида
$x1_1 = $lines[x1]; $x2_1 = $lines[x2]; $y1_1 = $lines[y1]; $y2_1 = $lines[y2];

$x1_2 = $lines[x1]; $x2_2 = $lines[x2]; $y1_2 = $lines[y1]; $y2_2 = $lines[y2];

$x1_3 = $lines[x1]; $x2_3 = $lines[x2]; $y1_3 = $lines[y1]; $y2_3 = $lines[y2];


Где в $x1_1 _1 - это $lines[number]

Я пробую таким образом, но оно не работает...
foreach ($lines as $line){
    eval("\$x1_". $line['number'] . ' = '); eval($line['x1'] . ';');
    eval("\$x2_". $line['number'] . ' = '); eval($line['x2'] . ';');
    eval("\$y1_". $line['number'] . ' = '); eval($line['y1'] . ';');
    eval("\$y2_". $line['number'] . ' = '); eval($line['y2'] . ';');
}
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
Oldshelf
@Oldshelf
Можно сделать гораздо проще:

$tmp_ar=array ('x1', 'x2', 'y1', 'y2');
foreach ($lines as $line){
    for ($i=0; $i<4; $i++)
    {
        $tmp=$tmp_ar [$i].'_'.$line ['number'];
        $$tmp=$line [$tmp_ar [$i]];
    }
}

https://www.php.net/manual/ru/language.variables.v...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы