PHP-Beispielcode zum Sortieren eines zweidimensionalen Arrays nach einem angegebenen Schlüsselwert

高洛峰
Freigeben: 2023-03-03 21:34:02
Original
2068 Leute haben es durchsucht

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; 
} 
}
Nach dem Login kopieren

Zweidimensionale PHP-Arrays werden nach Schlüsselwert sortiert

array_multisort() in PHP kann zum gleichzeitigen Sortieren mehrerer Arrays oder zum Sortieren mehrdimensionaler Arrays nach einer bestimmten Dimension oder verwendet werden mehrere Dimensionen. Die zugehörigen Schlüsselnamen bleiben unverändert, die numerischen Schlüsselnamen werden jedoch neu indiziert. Die Eingabearrays werden als Spalten einer Tabelle behandelt und nach Zeilen sortiert, wobei das erste Array das zu sortierende Hauptarray ist. Wenn beim Vergleich festgestellt wird, dass die Zeilen (Werte) im Array gleich sind, werden sie nach der Größe des entsprechenden Werts im nächsten Eingabearray usw. sortiert.

Wenn es sich bei dem zu sortierenden Array jedoch um ein zweidimensionales Array handelt, muss es nach dem Schlüsselwert des Arrays sortiert werden. Das folgende zweidimensionale Array muss beispielsweise entsprechend sortiert werden zum Sortierschlüsselnamen, dann kann array_multisort() nicht direkt implementiert werden:

$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);
Nach dem Login kopieren

gibt aus:

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
    )
 
)
Nach dem Login kopieren

Um den Originalschlüssel nicht zu zerstören, habe ich eine Sortierung geschrieben Funktion, die nur zweidimensionale Arrays unterstützt.

/**
* 根据数组中的某个键值大小进行排序,仅支持二维数组
* 
* @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;
}
Nach dem Login kopieren

Weitere PHP-Beispielcodes zum Sortieren zweidimensionaler Arrays nach angegebenen Schlüsselwerten finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!