我有這個數組結構。ID 145 是一個請求,它與另一個表有兩個關聯關系 - 項目 ID 16 和 17。因此,一個請求可以有多個項目?,F在我想改變這個結構并合并重復的信息。我的意思是,合并[0]和[n]。So funding_project_nameandrelation_id將成為新子數組的兩個條目。[145] => Array( [0] => Array ( [firstname] => John [institution] => Harvard [funding_project_name] => Project 1 #add to array funding_project_name - [0] [relation_id] => 16 #add to array relation_id - [0] ) [1] => Array ( [firstname] => John //discard [institution] => Harvard //discard [funding_project_name] => Project 2 #add to array funding_project_name - [1] [relation_id] => 17 #add to array relation_id - [1] ) )我使用以下方法實現了此輸出:$query->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC)知道如何獲得預期的結構嗎?已經嘗試了一些嵌套的 foreach,但不確定如何對項目進行分組預期的:[145] => Array ( [firstname] => John [institution] => Harvard [projects] => Array( [0] => Array( [funding_project_name] => Project 1 [relation_id] => 16 ) [1] => Array( [funding_project_name] => Project 2 [relation_id] => 17 ) ) )
1 回答

拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
如果只有 2 個字段發生變化,那么您可以循環所有鍵并收集數據 - 稍后根據需要查找唯一性并轉換為字符串:
$array = array_map(function ($arr) {
foreach(array_keys($arr[0]) as $k) {
$vals = array_column($arr, $k);
$e[$k] = count(array_unique($vals)) == 1 ? $vals[0] : $vals;
}
return $e;
}, $array);
現場示例:3v4l
如果您愿意 - 這是較舊的代碼版本:
$array = array_map(function ($arr) {
$a = array('first' => $arr[0]['first'], 'last' => $arr[0]['last']);
foreach($arr as $e) {
$a['funding_project_name'][] = $e['funding_project_name'];
$a['relation_id'][] = $e['relation_id'];
}
return $a;}, $array);
- 1 回答
- 0 關注
- 125 瀏覽
添加回答
舉報
0/150
提交
取消