PHP Как заменить строковые литералы, используя значение из массива? - PullRequest
0 голосов
/ 16 июля 2011

Я не уверен, что это правильное название для использования ...

Вот мой вопрос.

Я сохранил имена полей таблицы из базы данных в массиве и создал строку, подобную следующей

foreach ($fields as $field) {
    $str.="<td>{$data[key][field]}</td>";
}

И я сохранил данные из таблицы в другом массиве, который имеет вид

$data=array(array('name'=>"name 1",'address'=>"Address One"),array('name'=>"Name 2",'address'=>"Address two"),array('name'=>"Name 3",'address'=>"address three"),array('name'=>"test",'address'=>"test one"));

Теперь я сделал следующее

eval("\$str = \"$str\";");
foreach ($data as $key => $souceStr) {
    ?>
    <tr>
       <?=$str?>
    </tr>
    <?
}
?>

Моя цель - заменить строку, созданную мной из первого массива, значениями из второго массива. Я видел кодирование в CMS, такое как joomla, где они заменяют '{somename}' значением, которое я хочу сделать здесь.

=============================================== ==

Извините, Мой вопрос не был ясен. Но я получил то, что искал. Вот код

  <table width="100%" cellpadding="0" cellspacing="0" align="center" border="1">    
<tr>
    <?
    foreach ($header as $val) {
        ?>
        <th><?= $val ?></th>
        <?
    }       
    ?>
</tr>
<?
foreach ($fields as $field) {
    $str.='<td>$souceStr['.$field.']</td>';
}  
foreach ($data as $key => $souceStr) {
    eval("\$eval_str = \"$str\";");
    ?>
    <tr>            
       <?php echo $eval_str; ?>
    </tr>
    <?
}
?>

Идея состояла в том, чтобы напечатать HTML-таблицу.

1 Ответ

0 голосов
/ 16 июля 2011

Не думаю, что полностью понимаю ваш вопрос, но что, если вы просто сделали строку из второго массива, как вы сделали из первого? результат будет таким же, верно?

...