Opérations correspondantes de php sur des tableaux à deux dimensions

墨辰丷
Libérer: 2023-03-30 07:12:01
original
6887 Les gens l'ont consulté

Cet article présente principalement les opérations correspondantes de PHP sur les tableaux bidimensionnels. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Conseils :

array_keys($array) //返回所有键名 
 
array_values($array) //返回所有键值  
 
$result=array_reverse($input); //将数组颠倒,不保留键名 
$result_keyed=array_reverse($input,true); //将数组颠倒,保留键名 
 
array_keys($array,"blue"); //返回值为blue的键名
Copier après la connexion

1. fonction de déduplication de tableau bidimensionnel
Il existe une fonction intégrée pour la déduplication de tableau PHP array_unique (), mais la fonction array_unique de PHP ne s'applique qu'aux tableaux unidimensionnels , ne s'applique pas aux tableaux multidimensionnels. Ce qui suit fournit une fonction array_unique pour un tableau à deux dimensions

function unique_arr($array2D,$stkeep=false,$ndformat=true) 
{ 
  // 判断是否保留一级数组键 (一级数组键可以为非数字) 
  if($stkeep) $stArr = array_keys($array2D); 
 
  // 判断是否保留二级数组键 (所有二级数组键必须相同) 
  if($ndformat) $ndArr = array_keys(end($array2D)); 
 
  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 
  foreach ($array2D as $v){ 
    $v = join(",",$v);  
    $temp[] = $v; 
  } 
 
  //去掉重复的字符串,也就是重复的一维数组 
  $temp = array_unique($temp);  
 
  //再将拆开的数组重新组装 
  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; 
}
Copier après la connexion


<. 🎜>

$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));
Copier après la connexion

2. Méthode de tri d'un tableau bidimensionnel Méthode de tri d'un tableau unidimensionnel :

Fonctions publiques :

function printr($arr) 
{ 
  echo &#39;<pre class="brush:php;toolbar:false">&#39;;  
  print_r($arr); 
  echo &#39;

'; }
Copier après la connexion

Le premier groupe : trier et trier , selon la valeur de la clé du tableau PHP L'ascence séquentielle et la descente inverse sont utilisées pour trier et en même temps détruire la relation d'index du tableau d'origine - en fait, l'index numérique à partir de 0 est rétabli après la suppression de l'index .

$a = array(&#39;a&#39;=>1,2);  
sort($a); printr($a);  
rsort($a); printr($a); 
 
/*Array 
( 
  [0] => 1 
  [1] => 2 
) 
 
Array 
( 
  [0] => 2 
  [1] => 1 
) 
*/
Copier après la connexion

Le deuxième ensemble de fonctions : asort et arsort, ces deux fonctions sont C'est un peu plus puissant. Tant qu'ils peuvent conserver la relation d'index d'origine du tableau, remplacez respectivement sort et rsort par ces deux fonctions

<. 🎜>
$a = array(&#39;a&#39;=>1,2); 
asort($a); printr($a);   
arsort($a); printr($a);  
/* 
Array 
( 
  [a] => 1 
  [0] => 2 
) 
 
Array 
( 
  [0] => 2 
  [a] => 1 
) 
*/
Copier après la connexion

Le troisième groupe de fonctions de tri de tableaux PHP : krsort et ksort, Ces deux sont différents des deux groupes ci-dessus. Ces deux fonctions trient les noms de clés.

$a = array(&#39;a&#39;=>1,2); 
 ksort($a); printr($a);   
krsort($a); printr($a); 
 
/* 
Array 
( 
  [0] => 2 
  [a] => 1 
) 
 
Array 
( 
  [a] => 1 
  [0] => 2 
) 
*/
Copier après la connexion

Trier les tableaux PHP via des fonctions personnalisées Il existe trois fonctions :

uasort Trier les tableaux PHP via des fonctions personnalisées Les valeurs clés ​. ​sont triés et la relation d’index d’origine est conservée.

uksort trie les noms de clés du tableau PHP via une fonction personnalisée et conserve la relation d'index d'origine.
usort trie les valeurs clés du tableau PHP via une fonction personnalisée, supprime la relation d'index d'origine et crée un nouvel index à partir de zéro.
Ce qui suit est un exemple de

tri bidimensionnel :

/** 
 * @package   BugFree 
 * @version   $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $ 
 * 
 * 
 * Sort an two-dimension array by some level two items use array_multisort() function. 
 * 
 * sortArr($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……) 
 * @author           Chunsheng Wang <wwccss@263.net> 
 * @param array  $ArrayData  the array to sort. 
 * @param string $KeyName1  the first item to sort by. 
 * @param string $SortOrder1 the order to sort by("SORT_ASC"|"SORT_DESC") 
 * @param string $SortType1  the sort type("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING") 
 * @return array        sorted array. 
 */ 
function sortArr($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR") 
{ 
  if(!is_array($ArrayData)) return $ArrayData; 
   
  // Get args number. 
  $ArgCount = func_num_args(); 
  // Get keys to sort by and put them to SortRule array. 
  for($I = 1;$I < $ArgCount;$I ++) 
  { 
    $Arg = func_get_arg($I); 
    if(!eregi("SORT",$Arg)) 
    { 
      $KeyNameList[] = $Arg; 
      $SortRule[]  = &#39;$&#39;.$Arg; 
    } 
    else $SortRule[]  = $Arg; 
  } 
  // Get the values according to the keys and put them to array. 
  foreach($ArrayData AS $Key => $Info) 
  { 
    foreach($KeyNameList AS $KeyName) ${$KeyName}[$Key] = strtolower($Info[$KeyName]); 
  } 
   
  // Create the eval string and eval it. 
  $EvalString = &#39;array_multisort(&#39;.join(",",$SortRule).&#39;,$ArrayData);&#39;; 
  eval ($EvalString); 
  return $ArrayData; 
}
Copier après la connexion

 :


//################# 示例 ################# 
$arr = array( 
 array( 
   &#39;name&#39;    =>  &#39;学习&#39;, 
   &#39;size&#39;    =>  &#39;1235&#39;, 
   &#39;type&#39;    =>  &#39;jpe&#39;, 
   &#39;time&#39;    =>  &#39;1921-11-13&#39;, 
   &#39;class&#39;    =>  &#39;dd&#39;, 
 ), 
 array( 
   &#39;name&#39;    =>  &#39;中国功夫&#39;, 
   &#39;size&#39;    =>  &#39;153&#39;, 
   &#39;type&#39;    =>  &#39;jpe&#39;, 
   &#39;time&#39;    =>  &#39;2005-11-13&#39;, 
   &#39;class&#39;    =>  &#39;jj&#39;, 
 ), 
 array( 
   &#39;name&#39;    =>  &#39;编程&#39;, 
   &#39;size&#39;    =>  &#39;35&#39;, 
   &#39;type&#39;    =>  &#39;gif&#39;, 
   &#39;time&#39;    =>  &#39;1997-11-13&#39;, 
   &#39;class&#39;    =>  &#39;dd&#39;, 
 ), 
 array( 
   &#39;name&#39;    =>  &#39;中国功夫&#39;, 
   &#39;size&#39;    =>  &#39;65&#39;, 
   &#39;type&#39;    =>  &#39;jpe&#39;, 
   &#39;time&#39;    =>  &#39;1925-02-13&#39;, 
   &#39;class&#39;    =>  &#39;yy&#39;, 
 ), 
 array( 
   &#39;name&#39;    =>  &#39;中国功夫&#39;, 
   &#39;size&#39;    =>  &#39;5&#39;, 
   &#39;type&#39;    =>  &#39;icon&#39;, 
   &#39;time&#39;    =>  &#39;1967-12-13&#39;, 
   &#39;class&#39;    =>  &#39;rr&#39;, 
 ), 
); 
 
echo &#39;<pre class="brush:php;toolbar:false">&#39;; 
print_r($arr); echo &#39;<br>&#39;; 
 
//注意:按照数字方式排序时 153 比 65 小 
$temp = sortArr($arr,"name","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING"); 
 
print_r($temp); 
 
echo &#39;
';
Copier après la connexion

3. Convertir un tableau multidimensionnel en tableau unidimensionnel


function rebuild_array($arr){ //rebuild a array 
 static $tmp=array(); 
 
 for($i=0; $i<count($arr); $i++){ 
  if(is_array($arr[$i])){ 
    rebuild_array($arr[$i]); 
  }else{ 
    $tmp[]=$arr[$i]; 
  } 
 } 
 
 return $tmp; 
}
Copier après la connexion

Exemple :


$arr=array(&#39;123.html&#39;,&#39;456.html&#39;,array(&#39;dw.html&#39;,&#39;fl.html&#39;,array(&#39;ps.html&#39;,&#39;fw.html&#39;)),&#39;ab.html&#39;); 
 
// 定义一个三维数组,用来检测我们的函数 
echo &#39;<pre class="brush:php;toolbar:false">&#39;; 
print_r(rebuild_array($arr)); 
echo &#39;
';
Copier après la connexion

4. Supprimez les éléments vides du tableau


function array_remove_empty(&$arr, $trim = true)   
{   
  foreach ($arr as $key => $value) {   
    if (is_array($value)) {   
      array_remove_empty($arr[$key]);   
    } else {   
      $value = trim($value);   
      if ($value == &#39;&#39;) {   
        unset($arr[$key]);   
      } elseif ($trim) {   
        $arr[$key] = $value;   
      }  
    }   
  }   
}
Copier après la connexion

Exemple :


$a = array(array(3),2,&#39;&#39;,array(&#39;&#39;,23),0); 
 
array_remove_empty($a); 
 
printr($a); // printr 函数请在本文中找
Copier après la connexion

5. Obtenez la valeur sous une clé spécifique sous le tableau multidimensionnel et générez un tableau unidimensionnel.


function getall_by_key(array $arr, $key){ 
  if (!trim($key)) return false; 
  preg_match_all("/\"$key\";\w{1}:(?:\d+:|)(.*?);/", serialize($arr), $output); 
  return $output[1]; 
} 
 
$testArr = array(&#39;111&#39;=> 100, &#39;out&#39;=> 200, &#39;333&#39; => array(&#39;out&#39; => 310, array(321, 322, &#39;out&#39; => "this is a test"))); 
 
printr(getall_by_key($testArr, &#39;out&#39;));
Copier après la connexion

Résumé : Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Comment définir les informations d'en-tête en PHP


Utilisation de la clause d'utilisation dans la fonction anonyme PHP


Comment mettre en cache les fichiers php


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal