簡體   English   中英

在PHP中僅顯示大於x秒的唯一ID

[英]Only show Unique ID greater than x seconds in PHP

我試圖弄清楚如何僅在此數組中輸出30秒以上的唯一ID。 為簡單起見,只需要在30秒內獲取唯一ID的第一個值即可。

$array = array(
0 => array(
    'id' => '1',
    'seconds' => '36'
),
1 => array(
    'id' => '1',
    'seconds' => '60'
),
2 => array(
    'id' => '1',
    'seconds' => '36'
),
3 => array(
    'id' => '2',
    'seconds' => '22'
),
4 => array(
    'id' => '1',
    'seconds' => '36'
),
5 => array(
    'id' => '2',
    'seconds' => '36'
),
6 => array(
    'id' => '3',
    'seconds' => '44'
),
7 => array(
    'id' => '3',
    'seconds' => '2'
),
8 => array(
    'id' => '4',
    'seconds' => '58'
),
9 => array(
    'id' => '6',
    'seconds' => '9'
),
10 => array(
    'id' => '6',
    'seconds' => '8'
));

理想的結果看起來像這樣

$arrayResult = array(
0 => array(
    'id' => '1',
    'seconds' => '36'
),
1 => array(
    'id' => '2',
    'seconds' => '36'
),
2 => array(
    'id' => '3',
    'seconds' => '44'
),
3 => array(
    'id' => '4',
    'seconds' => '58'
));

目前,我只能獲得ID的唯一值,而無需將秒與“ id”字段相關聯。

您可以使用array_reduce遍歷$array並僅提取所需的值。

$array = array_reduce($array, function ($unique, $entry) {
    extract($entry);

    if (! isset($unique[$id]) && $seconds > 30) {
        $unique[$id] = $entry;
    }

    return $unique;
}, []);

$array = array_values($array);
$final_array = array();

foreach($array as $val)
{
    if($val['seconds'] > 30 && (!array_key_exists($val['id'], $final_array))){
        $final_array[$val['id']] = $val;
    }
}
echo "<pre>";
    print_r($final_array);
echo "</pre>";

如果您想重置陣列鍵,則可以使用

$final_array = array_values($final_array);

echo "<pre>";
    print_r($final_array);
echo "</pre>";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM