php 數(shù)組過濾函數(shù) array_filter與array_unique
May 25, 2016 pm 04:53 PM在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('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333')); print_r($array2D); print_r(unique_arr($array2D,true));

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

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
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

?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.

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=[

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

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.

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.

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

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(
