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

Maison 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中我給大家介紹兩個(gè)比較常用的數(shù)組過濾函數(shù)array_filter與array_unique了,一個(gè)是過濾數(shù)組空值,一個(gè)是過濾數(shù)組重復(fù)值,我們現(xiàn)在一起來看看。

語法

array_filter(array,function)

參數(shù) ? ? 描述

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

function ? ? 自定義函數(shù)的名稱,為空時(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ù)組中的重復(fù)值

去除一個(gè)數(shù)組中的重復(fù)值,可以使用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í)行的時(shí)間都差不多。

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

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

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

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


二維數(shù)組去重復(fù)項(xiàng)函數(shù)

PHP數(shù)組去除重復(fù)項(xiàng) 有個(gè)內(nèi)置函數(shù)array_unique (),但是php的 array_unique函數(shù)只適用于一維數(shù)組,對多維數(shù)組并不適用,以下提供一個(gè)二維數(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;
    }
    //去掉重復(fù)的字符串,也就是重復(fù)的一維數(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));


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Quelle est la différence entre utiliser foreach et iterator pour supprimer des éléments lors de la traversée de Java ArrayList?? Quelle est la différence entre utiliser foreach et iterator pour supprimer des éléments lors de la traversée de Java ArrayList?? Apr 27, 2023 pm 03:40 PM

1. La différence entre Iterator et foreach est la différence polymorphe (la couche inférieure de foreach est Iterator). Iterator est un type d'interface, et il ne se soucie pas du type de collection ou de tableau ; de la collection en premier, et même le type d'éléments dans la collection?; 1. Pourquoi dit-on que la couche inférieure de foreach est le code écrit par Iterator?: Code décompilé?: 2. La différence entre supprimer dans foreach et iterator. dans le manuel de développement Java d'Alibaba, mais aucune erreur ne sera signalée dans le cas 1, et une erreur sera signalée dans le cas 2 (java. util.ConcurrentModificationException) en premier

Comment déterminer le nombre de boucles foreach en php Comment déterminer le nombre de boucles foreach en php Jul 10, 2023 pm 02:18 PM

?Les étapes permettant à PHP de déterminer le numéro de la boucle foreach?: 1. Créez un tableau de "$fruits"?; 2. Créez une variable de compteur "$counter" avec une valeur initiale de 0. 3. Utilisez "foreach" pour boucler. à travers le tableau, et augmentez la valeur de la variable compteur dans le corps de la boucle, puis affichez chaque élément et son index?; 4. Affichez la valeur de la variable compteur en dehors de la boucle "foreach" pour confirmer quel élément atteint la boucle.

PHP renvoie un tableau avec les valeurs clés inversées PHP renvoie un tableau avec les valeurs clés inversées Mar 21, 2024 pm 02:10 PM

Cet article expliquera en détail comment PHP renvoie un tableau après avoir inversé la valeur de la clé. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence. J'espère que vous pourrez gagner quelque chose après avoir lu cet article. PHP Key Value Flip Array Key Value Flip est une opération sur un tableau qui échange les clés et les valeurs du tableau pour générer un nouveau tableau avec la clé d'origine comme valeur et la valeur d'origine comme clé. Méthode d'implémentation En PHP, vous pouvez effectuer un retournement clé-valeur d'un tableau via les méthodes suivantes : Fonction array_flip() : La fonction array_flip() est spécialement utilisée pour les opérations de retournement clé-valeur. Il re?oit un tableau en argument et renvoie un nouveau tableau avec les clés et les valeurs échangées. $original_array=[

Comment utiliser la fonction d'explosion PHP et résoudre les erreurs Comment utiliser la fonction d'explosion PHP et résoudre les erreurs Mar 10, 2024 am 09:18 AM

La fonction d'explosion en PHP est une fonction utilisée pour diviser une cha?ne en un tableau. Elle est très courante et flexible. Lors du processus d'utilisation de la fonction d'éclatement, nous rencontrons souvent des erreurs et des problèmes. Cet article présentera l'utilisation de base de la fonction d'éclatement et fournira quelques méthodes pour résoudre les rapports d'erreurs. 1. Utilisation de base de la fonction exploser En PHP, la syntaxe de base de la fonction exploser est la suivante : éclater(string$separator,string$stri

Erreurs courantes et solutions lors de l'utilisation de la fonction d'explosion en PHP Erreurs courantes et solutions lors de l'utilisation de la fonction d'explosion en PHP Mar 11, 2024 am 08:33 AM

Titre : Erreurs courantes et solutions lors de l'utilisation de la fonction exploser en PHP En PHP, la fonction exploser est une fonction courante utilisée pour diviser une cha?ne en un tableau. Cependant, certaines erreurs courantes peuvent survenir en raison d'une mauvaise utilisation ou d'un format de données incorrect. Cet article analysera les problèmes que vous pouvez rencontrer lors de l'utilisation de la fonction d'éclatement et fournira des solutions et des exemples de code spécifiques. Erreur 1?:?le paramètre délimiteur n'est pas transmis. Lors de l'utilisation de la fonction d'éclatement, l'une des erreurs les plus courantes est que le paramètre délimiteur n'est pas transmis.

Quelle est la différence entre les boucles foreach et for Quelle est la différence entre les boucles foreach et for Jan 05, 2023 pm 04:26 PM

Différences?: 1. for parcourt chaque élément de données via l'index, tandis que forEach parcourt les éléments de données du tableau via le programme sous-jacent JS?; 2. for peut terminer l'exécution de la boucle via le mot-clé break, mais forEach ne le peut pas?; .for peut contr?ler l'exécution de la boucle en contr?lant la valeur de la variable de boucle, mais forEach ne peut pas ; 4. for peut appeler des variables de boucle en dehors de la boucle, mais forEach ne peut pas appeler des variables de boucle en dehors de la boucle ; est supérieur à forEach.

PHP renvoie l'élément actuel dans un tableau PHP renvoie l'élément actuel dans un tableau Mar 21, 2024 pm 12:36 PM

Cet article expliquera en détail l'élément actuel du tableau renvoyé par PHP. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence. J'espère que vous pourrez gagner quelque chose après avoir lu cet article. Récupérer l'élément actuel dans un tableau PHP PHP fournit une variété de méthodes pour accéder et manipuler les tableaux, notamment obtenir l'élément actuel dans un tableau. Ce qui suit présente plusieurs techniques couramment utilisées : 1. Fonction current() La fonction current() renvoie l'élément actuellement pointé par le pointeur interne du tableau. Le pointeur pointe initialement vers le premier élément du tableau. Utilisez la syntaxe suivante : $currentElement=current($array);2.key() fonction key() la fonction renvoie l'élément actuellement pointé par le pointeur interne du tableau

Diviser la cha?ne en tableau à l'aide de la fonction PHP 'exploser' Diviser la cha?ne en tableau à l'aide de la fonction PHP 'exploser' Jul 24, 2023 pm 11:09 PM

Utilisez la fonction PHP "exploser" pour diviser une cha?ne en un tableau. Dans le développement PHP, vous rencontrez souvent des situations où vous devez diviser une cha?ne selon un délimiteur spécifié. à l'heure actuelle, nous pouvons utiliser la fonction "explose" intégrée de PHP pour convertir une cha?ne en tableau. Cet article explique comment utiliser la fonction ??exploser?? pour diviser une cha?ne et donne des exemples de code pertinents. La syntaxe de base de la fonction "exploser" est la suivante?: arrayexplode(

See all articles