дубликаты строк из foreach с использованием php

1

у меня есть вывод из запроса

object(stdClass)#14 (6) {
  ["aid"]=>
  string(2) "11"
  ["bid"]=>
  string(2) "34"
  ["colorname"]=>
  string(6) "Silver"
  ["colorgroupname"]=>
  string(15) "LIGHT AQUA OPAL"
  ["colorcode"]=>
  string(3) "6M8"
  ["brand"]=>
  string(6) "Car"
}

но после цикла в foreach

complite code, что я использую, и я использую var_dump для вывода вывода. Я получаю одну строку, но после цикла я получаю 6 повторяющихся строк.

function ViewDBGridColorfinder($header,$DBG_control,$parameters)
    {
        $rows = $this->select_join_by(index_join_ColorFinder,TBL_COLOR,tbl_join_ColorFinder,where_by,order_by_dbgrid,$parameters);

        $table = new Generator_Table($header);
        //var_dump($rows);

        if (is_array($rows) || is_object($rows))
        {
            foreach($rows as $val)
            {
                $DetailColor = '<a href="#PopColor" onclick="showdetail('.$rows->bid.')" data-toggle="modal">'.$rows->colorname.'</a>';
                $table->addCell($DetailColor);
                $table->addCell($rows->colorcode);
                $table->addCell($rows->brand);
                $table->addCell($rows->colorgroupname);
                $table->addCell(str_replace('onclick=""',"onclick=DelRow(".$rows->aid.")",$DBG_control));
            }
        }
        $DBGrid_data = $table->generate();

        return $DBGrid_data;
    }

результат будет повторяющимся.

где ошибка?

  • 0
    Похоже, вы путаете $rows с $val в вашем цикле. Но даже тогда код выглядит «удивительно».
  • 0
    если я использую $ val, я получаю уведомление:: пытаюсь получить свойство необъекта в
Показать ещё 5 комментариев
Теги:

4 ответа

0
Лучший ответ

Я думаю, что это будет только для вас

$DetailColor = '<a href="#PopColor" onclick="showdetail('.$rows->bid.')" data-toggle="modal">'.$rows->colorname.'</a>';
 $table->addCell($DetailColor);
 $table->addCell($rows->colorcode);
 $table->addCell($rows->brand);
 $table->addCell($rows->colorgroupname);

 $table->addCell(str_replace('onclick=""',"onclick=DelRow(".$rows->aid.")",$DBG_control));

Удалите foreach как.

0

Ваша $row является объектом. Таким образом, вам действительно не нужно простаивать внутри объекта. Причина, по которой вы получаете 6 записей, состоит в том, что в вашем объекте есть шесть элементов.

Подсчитайте это и увидите, Есть 6 элементов (помощь, ставка, colorname, colorgroupname, colorcode, brand):

object(stdClass)#14 (6) {
  ["aid"]=>
  string(2) "11"
  ["bid"]=>
  string(2) "34"
  ["colorname"]=>
  string(6) "Silver"
  ["colorgroupname"]=>
  string(15) "LIGHT AQUA OPAL"
  ["colorcode"]=>
  string(3) "6M8"
  ["brand"]=>
  string(6) "Car"
}

Поэтому для каждого элемента он добавит ячейку. В PHP вы можете использовать -> для доступа к элементам внутри объекта. Измените код таким образом:

 if (is_array($rows) || is_object($rows))
        {

            $DetailColor = '<a href="#PopColor" onclick="showdetail('.$rows->bid.')" data-toggle="modal">'.$rows->colorname.'</a>';
            $table->addCell($DetailColor);
            $table->addCell($rows->colorcode);
            $table->addCell($rows->brand);
            $table->addCell($rows->colorgroupname);
            $table->addCell(str_replace('onclick=""',"onclick=DelRow(".$rows->aid.")",$DBG_control));
    }
0

Замените все $rows на $val в цикле foreach

  • 0
    если я использую $ val, я получаю уведомление: пытаюсь получить свойство необъекта в
0

Вы использовали переменную $ rows, а не $ val. Обновите код следующим образом:

foreach($rows as $val)
{
  $DetailColor = '<a href="#PopColor" onclick="showdetail('.$val->bid.')" data-toggle="modal">'.$val->colorname.'</a>';
  $table->addCell($DetailColor);
  $table->addCell($val->colorcode);
  $table->addCell($val->brand);
  $table->addCell($val->colorgroupname);
  $table->addCell(str_replace('onclick=""',"onclick=DelRow(".$val->aid.")",$DBG_control));
}
  • 0
    если я использую $ val, я получаю уведомление: пытаюсь получить свойство необъекта в
  • 0
    Какая линия у тебя есть?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню