2つの値を持つ配列を含む配列があります。最初の配列は作成者の番号で、2番目の値は彼の所属です。
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
foreach ($array as $key => $value) {
$return[$value[1]][] = $value[0];
}
foreach ($return as $key => $value) {
echo implode(',', $value)." ".$key;
}
<?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
)
)
このコードを試してみてください、それはあなたの問題を解決するはずです:
<?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>';
}
?>
あなたはこのようにそれを行うことができます:
$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>';
}