从数据库加载数组,如下所示:
array=>(
0=>array(
'id'=>1,
'user'=>'eric',
'text'=>'hello'
),
1=>array(
'id'=>1,
'user'=>'eric',
'text'=>'how are you?'
),
2=>array(
'id'=>2,
'user'=>'john',
'text'=>'nice to meet you'
),
......
)
正如您所看到的,数组中唯一的区别是'text'字段,所以我想创建另一个数组以减少冗余,如下所示:
array=>(
0=>array(
'id'=>1,
'user'=>'eric',
'text'=>array(
0=>'hello',
1=>'how are you?'
)
),
1=>array(
'id'=>2,
'user'=>'john',
'text'=>array(
0=>'nice to meet you',
)
),
......
)
我是编程新手,我花了好几个小时试图搞清楚,但我做不到。我该怎么做到这一点?请帮忙。
答案 0 :(得分:1)
代码:
<?php
$newarray = array();
foreach ($array as $item)
{
if (!isset($newarray[$item['id']])) $newarray[$item['id']] = array();
$newarray[$item['id']][] = $item['text'];
}
?>
这会产生这样的事情:
array (
1 => array ("hello", "how are you?"),
2 => array ("a","b"),
...
)
// where the array keys (1,2,...) will be the IDs
答案 1 :(得分:1)
数组键将为id
值
$new_array = array();
foreach($old_array as $value) {
$new_array[$value['id']]['text'][] = $value['text'];
}
print_r($new_array);
答案 2 :(得分:0)
为了使它更紧凑,这个怎么样:
$new_array = array();
foreach ($old_array as $item) {
$id = $item['id'];
if (empty($new_array[$id]) || !in_array($item['text'], $new_array[$id])) {
$new_array[$id][] = $item['text'];
}
}
这也将减少给定id的重复文本。