国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php教程 php手冊 php 數(shù)組過濾函數(shù) array_filter與array_unique

php 數(shù)組過濾函數(shù) array_filter與array_unique

May 25, 2016 pm 04:53 PM
explode foreach

在php中我給大家介紹兩個比較常用的數(shù)組過濾函數(shù)array_filter與array_unique了,一個是過濾數(shù)組空值,一個是過濾數(shù)組重復值,我們現(xiàn)在一起來看看。

語法

array_filter(array,function)

參數(shù) ? ? 描述

array ? ? 必需。規(guī)定輸入的數(shù)組。

function ? ? 自定義函數(shù)的名稱,為空時過濾掉所有值為flase的元素

<?php
function odd($var) {
    return ($var & 1);
}
function even($var) {
    return (!($var & 1));
}
$array1 = array(
    "a" => 1,
    "b" => 2,
    "c" => 3,
    "d" => 4,
    "e" => 5
);
$array2 = array(
    6,
    7,
    8,
    9,
    10,
    11,
    12
);
echo "Odd :n";
print_r(array_filter($array1, "odd"));
echo "Even:n";
print_r(array_filter($array2, "even"));
/*
  
Odd : 
Array 
( 
    
[a] => 1 
    
[c] => 3 
    
[e] => 5 
) 
Even: 
Array 
( 
    
[0] => 6 
    
[2] => 8 
    
[4] => 10 
    
[6] => 12 
) 
*/
?>

過濾掉PHP數(shù)組中的重復值

去除一個數(shù)組中的重復值,可以使用foreach方法,也可以使用array_unique方法,下面的代碼兩種方法都使用了

<?php
$arrF = array();
$arrS = array();
$intTotal = 100;
$intRand = 10;
for ($i = 0; $i < $intTotal; $i++) {
    $arrF[] = rand(1, $intRand);
    $arrS[] = rand(1, $intRand);
}
$arrT = array_merge($arrF, $arrS);
$arrRF = array();
$intStart = time();
foreach ($arrT as $v) {
    if (in_array($v, $arrRF)) {
        continue;
    } else {
        $arrRF[] = $v;
    }
}
$intEnd = time();
$intTime = $intEnd - $intStart;
echo "With Continue,Spend time:$intTime<br/>";
$intStart1 = time();
$arrRS = array_unique($arrT);
$intEnd2 = time();
$intTime2 = $intEnd2 - $intStart1;
echo "With array_unique function,Spend time:($intTime2)";
echo "<pre class="brush:php;toolbar:false">";
print_r($arrT);
print_r($arrRF);
print_r($arrRS);
echo "
"; ?>

在$intTotal比較小的情況下,比如說1000以內(nèi),$intRand的取值基本不影響結(jié)果,兩者執(zhí)行的時間都差不多。

測試$intTotal 大于10000時,$intRand取值100時,使用array_unique的效率要高于foreach循環(huán)判斷,$intRand=10,兩者執(zhí)行時間一致。

因此,可以得出結(jié)論,當數(shù)組容量不大,大概在1000以內(nèi)時,使用兩者的執(zhí)行效率差不多。

當數(shù)組容量比較大時(具體應該到什么值,我沒有詳細測試,感興趣的可以確定一下這個值),隨著$intRand的逐漸增大,array_unique的表現(xiàn)更好,我不使用$intTotal/$intRand這個比值,是因為,感覺并不是成比例變化,但是基本會遵循比值越大,array_unique表現(xiàn)越好。

綜上所述,在過濾數(shù)組重復值的時候,建議使用array_unuique,數(shù)組不大的時候兩者效率等同,而array_unique使用當然讓你的代碼一下子減了好幾行,數(shù)組容量過大時,函數(shù)的表現(xiàn)更好


二維數(shù)組去重復項函數(shù)

PHP數(shù)組去除重復項 有個內(nèi)置函數(shù)array_unique (),但是php的 array_unique函數(shù)只適用于一維數(shù)組,對多維數(shù)組并不適用,以下提供一個二維數(shù)組 的 array_unique函數(shù)

<?php
function unique_arr($array2D, $stkeep = false, $ndformat = true) {
    // 判斷是否保留一級數(shù)組鍵 (一級數(shù)組鍵可以為非數(shù)字)
    if ($stkeep) $stArr = array_keys($array2D);
    // 判斷是否保留二級數(shù)組鍵 (所有二級數(shù)組鍵必須相同)
    if ($ndformat) $ndArr = array_keys(end($array2D));
    //降維,也可以用implode,將一維數(shù)組轉(zhuǎn)換為用逗號連接的字符串
    foreach ($array2D as $v) {
        $v = join(",", $v);
        $temp[] = $v;
    }
    //去掉重復的字符串,也就是重復的一維數(shù)組
    $temp = array_unique($temp);
    //再將拆開的數(shù)組重新組裝
    foreach ($temp as $k => $v) {
        if ($stkeep) $k = $stArr[$k];
        if ($ndformat) {
            $tempArr = explode(",", $v);
            foreach ($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;
        } else $output[$k] = explode(",", $v);
    }
    return $output;
}
?>

測試

$array2D = array(&#39;first&#39;=>array(&#39;title&#39;=>&#39;1111&#39;,&#39;date&#39;=>&#39;2222&#39;),&#39;second&#39;=>array(&#39;title&#39;=>&#39;1111&#39;,&#39;date&#39;=>&#39;2222&#39;),&#39;third&#39;=>array(&#39;title&#39;=>&#39;2222&#39;,&#39;date&#39;=>&#39;3333&#39;));
print_r($array2D);
print_r(unique_arr($array2D,true));


本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
Java ArrayList遍歷時使用foreach和iterator刪除元素的差異是什麼? Java ArrayList遍歷時使用foreach和iterator刪除元素的差異是什麼? Apr 27, 2023 pm 03:40 PM

一、Iterator和foreach的區(qū)別多態(tài)差異(foreach底層就是Iterator)Iterator是一個介面類型,他不關(guān)心集合或數(shù)組的類型;for和foreach都需要先知道集合的類型,甚至是集合內(nèi)元素的類型; 1.為啥說foreach底層就是Iterator寫的程式碼:反編譯程式碼:二、foreach與iterator時remove的差別先來看阿里java開發(fā)手冊但1的時候不會報錯,2的時候就會報錯(java. util.ConcurrentModificationException)首

php如何判斷foreach循環(huán)到第幾個 php如何判斷foreach循環(huán)到第幾個 Jul 10, 2023 pm 02:18 PM

php判斷foreach循環(huán)到第幾個的步驟:1、創(chuàng)建一個「$fruits」的數(shù)組;2、創(chuàng)建一個計數(shù)器變數(shù)「$counter」初始值為0;3、使用「foreach」循環(huán)遍歷數(shù)組,並在循環(huán)體中增加計數(shù)器變數(shù)的值,再輸出每個元素和它們的索引;4、在「foreach」循環(huán)體外輸出計數(shù)器變數(shù)的值,以確認循環(huán)到了第幾個元素。

PHP傳回一個鍵值翻轉(zhuǎn)後的陣列 PHP傳回一個鍵值翻轉(zhuǎn)後的陣列 Mar 21, 2024 pm 02:10 PM

這篇文章將為大家詳細講解有關(guān)PHP返回一個鍵值翻轉(zhuǎn)後的數(shù)組,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP鍵值翻轉(zhuǎn)數(shù)組鍵值翻轉(zhuǎn)是一種對數(shù)組進行的操作,它將數(shù)組中的鍵和值進行交換,產(chǎn)生一個新的數(shù)組,其中原始鍵作為值,原始值作為鍵。實作方法在php中,可以透過以下方法對陣列進行鍵值翻轉(zhuǎn):array_flip()函數(shù):array_flip()函數(shù)專門用於鍵值翻轉(zhuǎn)操作。它接收一個數(shù)組作為參數(shù),並傳回一個新的數(shù)組,其中鍵和值已交換。 $original_array=[

PHP explode函數(shù)使用方法與報錯解決 PHP explode函數(shù)使用方法與報錯解決 Mar 10, 2024 am 09:18 AM

PHP中的explode函數(shù)是用來將字串分割成陣列的函數(shù),它非常常用且靈活。在使用explode函數(shù)的過程中,常常會遇到一些報錯和問題,本文將介紹explode函數(shù)的基本用法並提供一些解決報錯的方法。一、explode函數(shù)基本用法在PHP中,explode函數(shù)的基本語法如下:explode(string$separator,string$stri

PHP中使用explode函數(shù)時常見的錯誤及解決方案 PHP中使用explode函數(shù)時常見的錯誤及解決方案 Mar 11, 2024 am 08:33 AM

標題:PHP中使用explode函數(shù)時常見的錯誤及解在PHP中,explode函數(shù)是用來將字串分割成陣列的常用函數(shù)。然而,由於使用不當或資料格式不正確,可能會導致一些常見的錯誤。本文將針對使用explode函數(shù)時可能遇到的問題進行分析,並提供解決方案和具體的程式碼範例。錯誤一:未傳入分隔符號參數(shù)在使用explode函數(shù)時,最常見的錯誤之一是未傳入分隔

foreach和for迴圈的差別是什麼 foreach和for迴圈的差別是什麼 Jan 05, 2023 pm 04:26 PM

區(qū)別:1、for透過索引來循環(huán)遍歷每一個資料元素,而forEach透過JS底層程式來循環(huán)遍歷數(shù)組的資料元素;2、for可以透過break關(guān)鍵字來終止迴圈的執(zhí)行,而forEach不可以;3、 for可以透過控制迴圈變數(shù)的數(shù)值來控制迴圈的執(zhí)行,而forEach不行;4、for在迴圈外可以呼叫迴圈變量,而forEach在迴圈外不能呼叫迴圈變數(shù);5、for的執(zhí)行效率要高於forEach。

PHP傳回數(shù)組中的目前元素 PHP傳回數(shù)組中的目前元素 Mar 21, 2024 pm 12:36 PM

這篇文章將為大家詳細講解有關(guān)PHP返回數(shù)組中的當前元素,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。取得PHP陣列中的目前元素php為存取和操作陣列提供了多種方法,其中包括取得陣列中的目前元素。以下介紹幾種常用的技術(shù):1.current()函數(shù)current()函數(shù)傳回數(shù)組內(nèi)部指標目前指向的元素。指標最初指向數(shù)組的第一個元素。使用下列語法:$currentElement=current($array);2.key()函數(shù)key()函數(shù)傳回陣列內(nèi)部指標目前指向元

使用PHP函數(shù) 'explode' 將字串拆分為數(shù)組 使用PHP函數(shù) 'explode' 將字串拆分為數(shù)組 Jul 24, 2023 pm 11:09 PM

使用PHP函數(shù)"explode"將字串拆分為數(shù)組在PHP開發(fā)中,經(jīng)常會遇到需要將一個字串依照指定的分隔符號進行拆分的情況。這時,我們可以使用PHP內(nèi)建函數(shù)"explode"來實現(xiàn)字串到陣列的轉(zhuǎn)換。本文將介紹如何使用"explode"函數(shù)來拆分字串,並給出相關(guān)的程式碼範例。 "explode"函數(shù)的基本語法如下:arrayexplode(

See all articles