簡體   English   中英

數組唯一值PHP

[英]Array unique values PHP

我想通過用戶名找到唯一值:

因此結果數組將為[0] =>JakeP, [1]=>TomC

我的代碼當前可以運行,但是我想知道是否有更好的方法以更少的循環或using array_unique函數來完成此任務?

  Array
    (
        [0] => Array
            (
                [ID] => 3
                [Username] => TomC
                [Project_Name] => Inventory
            )

        [1] => Array
            (
                [ID] => 4
                [Username] => JakeP
                [Project_Name] => Inventory
            )

        [2] => Array
            (
                [ID] => 2
                [Username] => TomC
                [Project_Name] => Stocks

            )

        [3] => Array
            (
                [ID] => 1
                [Username] => Tomc
                [Project_Name] => Stocks
            )

    )

我有效的代碼是:

$names_filter = array();
foreach($latest_projects as $project)
{
if(empty($names_filter)) 
{ 
$names_filter[] = $project['Username']; 
}
else {
foreach($names_filter as $key=>$value)
 { 
 if($value == $project['Username'])
   { break; }
 else
   {
    $names_filter[] = $project['Username'];
   }
  }
}
}

如果您使用的PHP> = 5.5,則可以利用array_column()函數:

$uniqueNames = array_unique(
    array_column($myArray, 'Username')
);

在PHP 5.5之前,您可以使用:

$uniqueNames = array_unique(
    array_map(
        function($value) {
            return $value['Username'];
        },
        $myArray
    )
);

您可以使用in_array函數來簡化代碼。 例:

$names_filter = array();

foreach($latest_projects as $project)
{
    if(!in_array($project['Username'], $names_filter))
    {
        $names_filter[] = $project['Username'];
    }
}

in_array()函數檢查數組中是否存在值。 因此, foreach循環只會將項目用戶名添加到$ names_filter數組中(如果不在數組中)。 輸出應為$ names_filter數組中的唯一用戶名列表。

我們可以遍歷$latest_projects並將每個用戶名存儲到新數組( $filter )。 由於數組不能有兩個具有相同鍵的元素,因此如果鍵存在,它將被覆蓋。

$filter = array();
foreach ($latest_projects  as $project) 
{
    $filter[$project['Username']] = 1;    
}

$filter = array_keys($filter);

我不能說它在其他解決方案上的性能,但是使用array_maparray_unique可以達到類似的效果。 但是它也不易讀,這同樣重要。

$uniqueUsers = array_unique(array_map(function ($p) { return $p['Username']; }, $latest_projects));

暫無
暫無

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

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