我在 SO 上找到了許多類似問題的參考資料,但與我正在嘗試做的事情沒有任何關系。我有這個陣列輸出:
0: {id: 1000012, kp_uid: 100000570, assigned_uid: '[email protected]', full_name: 'Tim Hughes'}
1: {id: 1000013, kp_uid: 100000570, assigned_uid: '[email protected]', full_name: 'Brad Slater'}
2: {id: 1000014, kp_uid: 100000570, assigned_uid: '[email protected]', full_name: 'Karen Tevis'}
3: {id: 1000015, kp_uid: 100000597, assigned_uid: '[email protected]', full_name: 'Karen Tevis'}
我現在想使用“kp_uid”來定位所有常見值,然后將每個鍵的“full_name”值組合成一個字串(用逗號分隔)。上述示例的預期結果將是:
0: {kp_uid: 100000570, full_name: 'Tim Hughes, Brad Slater, Karen Tevis'}
1: {kp_uid: 100000597, full_name: 'Karen Tevis'}
我嘗試了從 SO 收集的許多想法,這是最接近的,但我無法分離出唯一鍵:
unset($kp_assign['id']);
unset($kp_assign['assigned_uid']);
$result = array();
foreach ($kp_assign as $arr) {
foreach($arr as $key => $val) {
$result[$key][] = $val;
}
}
return $result;
部分結果顯示了所有四個名稱:
full_name: Array(4)
0: "Tim Hughes"
1: "Brad Slater"
2: "Karen Tevis"
3: "Karen Tevis"
這里的任何方向將不勝感激。謝謝你。
uj5u.com熱心網友回復:
$items = [
['id' => 1000012, 'kp_uid' => 100000570, 'assigned_uid' => '[email protected]', 'full_name' => 'Tim Hughes'],
['id' => 1000013, 'kp_uid' => 100000570, 'assigned_uid' => '[email protected]', 'full_name' => 'Brad Slater'],
['id' => 1000014, 'kp_uid' => 100000570, 'assigned_uid' => '[email protected]', 'full_name' => 'Karen Tevis'],
['id' => 1000015, 'kp_uid' => 100000597, 'assigned_uid' => '[email protected]', 'full_name' => 'Karen Tevis']
];
$grouped = [];
// group items by kp_uid
foreach ($items as $item) {
$grouped[$item['kp_uid']][] = $item;
}
function mapNamesCallback($item)
{
return $item['full_name'];
}
// iterate over groups and return a single item
// in form of kp_uid => x, full_names => 'name, name2 etc.'
$result = array_map(function ($group, $kpUid) {
return ['kp_uid' => $kpUid, 'full_name' => implode(', ', array_map('mapNamesCallback', $group))];
}, $grouped, array_keys($grouped));
這將回傳所需的結果。為了清楚起見,我在代碼中留下了一些注釋。
uj5u.com熱心網友回復:
嘗試這樣的事情
unset($kp_assign['id']);
unset($kp_assign['assigned_uid']);
$result = array();
foreach ($kp_assign as $arr) {
foreach($arr as $key => $val) {
$result[$key][] = $val;
}
}
// loop through results, using & to reference original value in array
// you will need to change this to suit the contents of your results array, it is not clear from the example what the keys within the results array will be
foreach ($results as $key => &$val) {
$val = implode(", ", $val); // implode the names, with comma separator
}
return $result;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/437554.html
上一篇:獲取php會話資料
