#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'];
}