我有這個物件陣列,我需要從中生成陣列,以使每個陣列都包含 [用戶名] 和他的 [長度] 的總和,長度是以秒為單位的時間。
最好的方法是什么?
Array
(
[0] => stdClass Object
(
[length] => 4658
[user_id] => 1922053
[user_name] => Walled
)
[1] => stdClass Object
(
[length] => 5
[user_id] => 1922053
[user_name] => Walled
)
[2] => stdClass Object
(
[length] => 5555
[user_id] => 19220
[user_name] => Michael
)
[3] => stdClass Object
(
[length] => 2552
[user_id] => 19220
[user_name] => Michael
)
)
uj5u.com熱心網友回復:
這會將舊陣列處理成新陣列,它使用 user_id 作為新陣列的鍵,因此它可以檢查它是否正在創建新的出現或只是將長度添加到新陣列中的現有出現
$array = [
(object)['length' => 4658, 'user_id' => 1922053, 'user_name' => 'Walled'],
(object)['length' => 5, 'user_id' => 1922053, 'user_name' => 'Walled'],
(object)['length' => 5555, 'user_id' => 19220, 'user_name' => 'Michael'],
(object)['length' => 2552, 'user_id' => 19220, 'user_name' => 'Michael']
];
$new = [];
foreach( $array as $a ) {
if ( ! array_key_exists($a->user_id, $new) ) {
$new[$a->user_id] = $a;
} else {
echo $new[$a->user_id]->length . PHP_EOL;
$new[$a->user_id]->length = $a->length;
}
}
print_r($new);
結果
Array
(
[1922053] => stdClass Object
(
[length] => 4663
[user_id] => 1922053
[user_name] => Walled
)
[19220] => stdClass Object
(
[length] => 8107
[user_id] => 19220
[user_name] => Michael
)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/405963.html
標籤:
上一篇:如何為各個欄位創建一個物件陣列
