我有一个包含2个值的数组的Array,第一个是作者的编号,第二个是他的隶属关系。
Array (
[0] => Array (
[0] => 2
[1] => Department of General Chemistry
)
[1] => Array (
[0] => 3
[1] => Institute of Silicate Materials
)
[2] => Array (
[0] => 4
[1] => Department of General Chemistry
)
[3] => Array (
[0] => 5
[1] => Department of General Chemistry
)
[4] => Array (
[0] => 6
[1] => Institute of Silicate Materials
)
)
如果关联是相同的,我如何对作者进行分组?我需要输出类似于:
3,6 Institute of Silicate Materials
2,4,5 Department of General Chemistry
答案 0 :(得分:25)
foreach ($array as $key => $value) {
$return[$value[1]][] = $value[0];
}
foreach ($return as $key => $value) {
echo implode(',', $value)." ".$key;
}
答案 1 :(得分:3)
<?php
//the array
$data = array(array(2,'Department of General Chemistry'),array(3,'Institute of Silicate Materials'),array(4,'Department of General Chemistry'),array(5,'Department of General Chemistry'),array(6,'Institute of Silicate Materials'));
//a new array to store the data
$newData = array();
//loop over each value in the data
foreach($data as $d){
//check if a key exists under the new data for the common value (affiliation)
if(!isset($newData[$d[1]])){
//doesn't exist, group under the common value (affiliation)
$newData[$d[1]] = array(array(),$d[1]);
}
//add the author under it's affiliation
$newData[$d[1]][0][] = $d[0];
}
//get the values from the new data, this resets the keys
$newData = array_values($newData);
//display the data
echo '<pre>'.print_r($newData,1).'</pre>';
结果:
Array
(
[0] => Array
(
[0] => Array
(
[0] => 2
[1] => 4
[2] => 5
)
[1] => Department of General Chemistry
)
[1] => Array
(
[0] => Array
(
[0] => 3
[1] => 6
)
[1] => Institute of Silicate Materials
)
)
答案 2 :(得分:2)
试试这段代码,它应该可以解决你的问题:
<?php
$element = array (
array (
2
,'Department of General Chemistry'
) ,
array (
3,
'Institute of Silicate Materials'
),
array (
4
, 'Department of General Chemistry'
) ,
array (
5
, 'Department of General Chemistry'
) ,
array (
6
, 'Institute of Silicate Materials'
)
);
$res = array();
for($i=0; $i< count($element); $i++){
$res[$element[$i][1]][] = $element[$i][0];
}
echo '<pre>';
var_dump($res);
echo '</pre>';
foreach ($res as $key => $value){
echo $key .' : '. implode(',',$value). '<br>';
}
?>
答案 3 :(得分:0)
你可以这样做:
$ar = array (
array(
2,
'Department of General Chemistry'
),
array(
3,
'Institute of Silicate Materials'
),
array(
4,
'Department of General Chemistry'
),
array(
5,
'Department of General Chemistry'
),
array(
6,
'Institute of Silicate Materials'
)
);
$result = array();
foreach ($ar as $key => $value) {
if (array_key_exists($value[1], $result)) {
$result[$value[1]] .= ',' . $value[0];
} else {
$result[$value[1]] = $value[0];
}
}
foreach ($result as $key => $value) {
echo $value . ' ' . $key . '<br>';
}