Hello. There is such an array.

Array ( 0 => Array ([tav_title] => 'Для Женщин', [tac_title] => 'Для кого' ), 1 => Array ([tav_title] => 'Серебро 925', [tac_title] => 'Металл' ), 2 => Array ([tav_title] => 'Фианит', [tac_title] => 'Вставка' ), 3 => Array ([tav_title] => 'Горный хрусталь' [tac_title] => 'Вставка' ), 4 => Array ([tav_title] => 'SOKOLOV' [tac_title] => 'Бренд'), ); 

I deduce it like this:

 <?php foreach ($res as $item):?> <b><?= $item['tac_title'] ?></b>: <?= $item['tav_title'] ?><br> <? endforeach;?> 

It looks like this:

 Для кого: Для Женщин Металл: Серебро 925 Вставка: Фианит Вставка: Горный хрусталь Бренд: SOKOLOV 

As you can see, the insert field is repeated several times, and the value is different. How can I get it like this?

 Для кого: Для Женщин Металл: Серебро 925 Вставка: Фианит, Горный хрусталь Бренд: SOKOLOV 

If it helps, then below MySql request.

 SELECT `t_a_v`.`title` AS 'tav_title', `t_a_c`.`title` AS 'tac_title' FROM `tm_attr_value` AS `t_a_v` LEFT JOIN `tm_attr_category` AS `t_a_c` ON `t_a_c`.`id` = `t_a_v`.`id_attr_category` WHERE `t_a_v`.`id` = '$attrValue' 
  • Format normally "mySql" request, you can break your head. For the question, either before output, process your array by folding the lines and removing unnecessary elements of the array, or write a mysql query. - koks_rs
  • @koks_rs Left only a request! - duddeniska
  • four
    Add grouping and use group_concat to get the list separated by commas. A similar question was a couple of hours ago .

2 answers 2

In such cases, I always do a preliminary data preparation before outputting:

 $result = [ // результат выполнения sql 0 => Array ([tav_title] => 'Для Женщин', [tac_title] => 'Для кого' ), 1 => Array ([tav_title] => 'Серебро 925', [tac_title] => 'Металл' ), 2 => Array ([tav_title] => 'Фианит', [tac_title] => 'Вставка' ), 3 => Array ([tav_title] => 'Горный хрусталь', [tac_title] => 'Вставка' ), 4 => Array ([tav_title] => 'SOKOLOV', [tac_title] => 'Бренд'), ]; // подготовка данных $data = []; foreach($result => $item) { $data[$item[tac_title]] = $item[tav_title]; } // таким образом получу подходящий массив $data: // 'Для кого' => 'Для Женщин', // 'Металл' => 'Серебро 925', // 'Вставка' => ['Фианит', 'Горный хрусталь'], // 'Бренд' => 'SOKOLOV', // вывод <?php foreach ($data as $key => $value):?> <b><?= $key ?></b>: <?php if (is_array($value)) { foreach($value as $elem) { echo $elem.','; } } else { echo $value; } ?><br> <? endforeach;?> 

    Try this:

     SELECT t_a_c.title as tac_title, GROUP_CONCAT(DISTINCT t_a_v.title ORDER BY t_a_v.title ASC SEPARATOR ', ') AS tav_title FROM tm_attr_value t_a_v LEFT JOIN tm_attr_category t_a_c ON t_a_c.id = t_a_v.id_attr_category WHERE t_a_v.id = '$attrValue'