【发布时间】:2017-01-03 18:24:32
【问题描述】:
我有这样的数组:
Array
(
Array
(
[0] => xx
[1] => 123
)
Array
(
[0] => xx
[1] => 523
)
Array
(
[0] => xx
[1] => 783
)
Array
(
[0] => yy
[1] => 858
)
Array
(
[0] => yy
[1] => 523
)
Array
(
[0] => xx
[1] => 235
)
)
我想要做的是:
Array
(
Array
(
[0] => xx
[1] => 123
[2] => 523
[3] => 783
[4] => 235
)
Array
(
[0] => yy
[1] => 858
[2] => 523
)
)
所以,我只需要查找 [0],找到相同的值,然后删除重复项并将其他值(未知数字,尽管这里只有一个)合并到相同的 [0] 值下。 如果我这样做:
$array = [array("xx","123"), array("xx","523"), array("xx","783"), array("yy","858"), array("yy","523"), array("xx","235")];
$new=array();
$col = array_column($array, 0);
foreach( $array as $key => $value ) {
if( ($find = array_search($value[0], $col)) !== false ) {
unset($value[0]);
$new[$find]= array_merge($array[$find], $value);
}
}
print_r($new);
我明白了(没有所有值):
Array
(
[0] => Array
(
[0] => xx
[1] => 123
[2] => 235
)
[3] => Array
(
[0] => yy
[1] => 858
[2] => 523
)
)
【问题讨论】:
-
你在一小时前已经问过同样的问题:stackoverflow.com/q/41449036为什么又要问了?
-
将每个生成的子数组的第一个元素作为关联数组的键而不是数组的元素是否有意义?
-
例如
array('xx' => array(123, 523, ...), 'yy' => array(858, 523)) -
是的,这可能是有道理的,但我需要它作为第一个元素