php foreach зацикливается только один раз с данными Dynamica - PullRequest
0 голосов
/ 13 апреля 2011

Я бы хотел, чтобы вывод отображался так:

category1 subcategory1.1 subcategory1.2

category2 subcategory2.1 subcategory2.2

Etc ...

Я считаю, что это проблема с str_replace () Я не уверен, где проблема, кто-то может протянуть руку?

Вот код:

class temp 
{
var $file;

function get_file($temp){
$this->file = get_file_contents($temp)
return $this->file;
}

function new_list($forum_list)
{
    foreach($forum_list as $key => $value)
    {
        $this->file = str_replace('{'.$key.'}', $value, $this->file);
    }
    return $this->file;
}

function display()
{
    echo $this->file;
}
}

 $temp = new temp();

$temp->get_file('file.html');

mysql_select_db($database_config, $config);
$query_cat = "SELECT * FROM category ORDER BY dsp ASC";
$cat = mysql_query($query_cat, $config) or die(mysql_error());

while ($row_cat = mysql_fetch_array($cat)){
    $temp->new_list(array(
        'CAT_TITLE' => $row_cat['title'],
        'CAT_DESCRIPTION' => $row_cat['description']));

    $cid = $row_cat['id'];


mysql_select_db($database_config, $config);
$query_cat = "SELECT * FROM subcategory WHERE cid={$cid}";
$subcat = mysql_query($query_subcat, $config) or die(mysql_error());

    while ($row_subcat = mysql_fetch_array($subcat)){
        $temp->new_list(array(
            'SUBCAT_TITLE' => $row_subcat['title'],
            'SUBCAT_DESCRIPTION' => $row_subcat['description']));
    }
}
$temp->display();

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

Одна проблема, которую я вижу:

$this->file = str_replace('{'.$key.'}', $value, $this->file);

Вы перезаписываете свою переменную $file на каждой итерации, и, кроме того, вы никогда не устанавливаете $file, насколько я вижу, он должен быть пустым после запуска вашего кода.

1 голос
/ 13 апреля 2011

Если я правильно понял ваш вопрос, тогда вы должны добавить вывод str_replace к другой переменной, а не к исходному файлу $:

class temp 
{
var $file;
var $output;

  function new_list($forum_list)
  {
    foreach($forum_list as $key => $value)
    {
        $this->output .= str_replace('{'.$key.'}', $value, $this->file);
    }
    return $this->output;
  }

  function display()
  {
    echo $this->output;
  }
}
...