Exemple de code PHP pour trier un tableau à deux dimensions par une valeur de clé spécifiée

高洛峰
Libérer: 2023-03-03 21:34:02
original
2056 Les gens l'ont consulté

function array_sort($array, $key){ 
if(is_array($array)){ 
$key_array = null; 
$new_array = null; 
for( $i = 0; $i < count( $array ); $i++ ){ 
$key_array[$array[$i][$key]] = $i; 
} 
ksort($key_array); 
$j = 0; 
foreach($key_array as $k => $v){ 
$new_array[$j] = $array[$v]; 
$j++; 
} 
unset($key_array); 
return $new_array; 
}else{ 
return $array; 
} 
}
Copier après la connexion

Les tableaux PHP bidimensionnels sont triés par valeur clé

array_multisort() en PHP peut être utilisé pour trier plusieurs tableaux à la fois, ou pour trier des tableaux multidimensionnels selon une certaine dimension ou dimensions multiples. Les noms de clés associés restent inchangés, mais les noms de clés numériques sont réindexés. Les tableaux d'entrée sont traités comme des colonnes d'un tableau et triés par lignes, le premier tableau étant le tableau principal à trier. Si les lignes (valeurs) du tableau sont comparées comme étant identiques, elles sont triées en fonction de la taille de la valeur correspondante dans le tableau d'entrée suivant, et ainsi de suite.

Mais si le tableau qui doit être trié est un tableau à deux dimensions, il doit être trié en fonction de la valeur clé du tableau. Par exemple, le tableau à deux dimensions ci-dessous doit être trié en fonction. au nom de la clé de tri, alors array_multisort() ne peut pas être implémenté directement :

$data[5] = array(&#39;volume&#39; => 67, &#39;edition&#39; => 2);
$data[4] = array(&#39;volume&#39; => 86, &#39;edition&#39; => 1);
$data[2] = array(&#39;volume&#39; => 85, &#39;edition&#39; => 6);
$data[3] = array(&#39;volume&#39; => 98, &#39;edition&#39; => 2);
$data[1] = array(&#39;volume&#39; => 86, &#39;edition&#39; => 6);
$data[6] = array(&#39;volume&#39; => 67, &#39;edition&#39; => 7);
// 准备要排序的数组
foreach ($data as $k => $v) {
  $edition[] = $v[&#39;edition&#39;];
}
array_multisort($edition, SORT_ASC, $data);
print_r($data);
Copier après la connexion

affichera :

Array
(
  [0] => Array
    (
      [volume] => 86
      [edition] => 1
    )
 
  [1] => Array
    (
      [volume] => 67
      [edition] => 2
    )
 
  [2] => Array
    (
      [volume] => 98
      [edition] => 2
    )
 
  [3] => Array
    (
      [volume] => 85
      [edition] => 6
    )
 
  [4] => Array
    (
      [volume] => 86
      [edition] => 6
    )
 
  [5] => Array
    (
      [volume] => 67
      [edition] => 7
    )
 
)
Copier après la connexion

Afin de ne pas détruire la clé d'origine, j'ai écrit un tri. fonction qui ne prend en charge que les tableaux à deux dimensions.

/**
* 根据数组中的某个键值大小进行排序,仅支持二维数组
* 
* @param array $array 排序数组
* @param string $key 键值
* @param bool $asc 默认正序
* @return array 排序后数组
*/
function arraySortByKey(array $array, $key, $asc = true) 
{
  $result = array();
  // 整理出准备排序的数组
  foreach ( $array as $k => &$v ) {
    $values[$k] = isset($v[$key]) ? $v[$key] : &#39;&#39;;
  }
  unset($v);
  // 对需要排序键值进行排序
  $asc ? asort($values) : arsort($values);
  // 重新排列原有数组
  foreach ( $values as $k => $v ) {
    $result[$k] = $array[$k];
  }
  
  return $result;
}
Copier après la connexion

Pour plus d'exemples de codes PHP permettant de trier des tableaux bidimensionnels par valeurs clés spécifiées, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!