как следующие данные могут быть организованы в массивы в php

#php #arrays

#php #массивы

Вопрос:

У меня есть следующие значения из базы данных с использованием mysql_fetch_assoc()

 Id - Val
0 - TextA
0 - TextB
1 - TextC
2 - TextD
2 - TextE
3 - TextF
  

Мне нужно добавить эти значения в массив в php, который может объединять значения, подобные этому

 0 - TextA,TextB
1 - TextC
2 - TextD,TextE
3 - TextF
  

Комментарии:

1. Разве вы не можете сделать это в запросе к БД? У меня было аналогичное требование при использовании MySQL, поэтому я использовал group_concat — очень удобно.

2. Я предполагаю, что вы получаете данные в виде массива?

3. @user519575: это хорошее предложение. Я бы рекомендовал опубликовать это в качестве ответа 🙂

4. @MeLight: формат ввода неясен: / Я предполагаю, что он не получает данные как что-либо прямо сейчас, и просто решает, что поместить внутрь цикла, в котором он выполняется mysql_fetch_array .

5. Я прочитал это неправильно как желательные строковые значения массива ( TextA,TextB ).

Ответ №1:

 
$organized = array();

foreach($rows as $r)
{
  if (!isset($organized[$r['Id']]))
  {
    $organized[$r['Id']] = array();
  }
  $organized[$r['Id']][] = $r['Val'];
}

  

Ответ №2:

Храните их примерно так.

 array(
   0 => array( 'TextA', 'TextB' ),
   1 => array( 'TextC' ),
   2 => array( 'TextD', 'TextE'),
   3 => array( 'TextF')
);
  

Вы можете заполнить их:

 $array = array();
foreach ( $data as $item )
{
   $id = $item['id'];
   if ( !array_key_exists( $id , $array))
   {
      $array[$id] = array();
   }
   $array[ $id ][] = $item['value'];
}