PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

list> <krsort
Last updated: Fri, 20 Jun 2008

view this page in

ksort

(PHP 4, PHP 5)

ksort — Trie un tableau suivant les clés

Description

bool ksort ( array &$array [, int $sort_flags ] )

Trie le tableau array suivant les clés, en maintenant la correspondance entre les clés et les valeurs. Cette fonction est pratique pour les tableaux associatifs.

Liste de paramètres

array

Le tableau d'entrée.

sort_flags

Vous pouvez modifier le comportement de cette fonction en utilisant le paramètre optionnel sort_flags . Pour plus de détails, voyez le manuel pour la fonction sort().

Valeurs de retour

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Historique

Version Description
4.0.0 Le paramètre optionnel sort_flags a été ajouté.

Exemples

Exemple #1 Exemple avec ksort()

<?php
$fruits 
= array("d"=>"lemon""a"=>"orange""b"=>"banana""c"=>"apple");
ksort($fruits);
foreach (
$fruits as $key => $val) {
    echo 
"$key = $val\n";
}
?>

L'exemple ci-dessus va afficher :

a = orange
b = banana
c = apple
d = lemon



list> <krsort
Last updated: Fri, 20 Jun 2008
 
add a note add a note User Contributed Notes
ksort
06-Nov-2006 02:26
Why not just use built-in PHP functions? You can do an in-place natural sort by keys with:

uksort($array, 'strnatcasecmp');
richard dot quadling at bandvulc dot co dot uk
24-Oct-2005 10:10
Just to complete the comments made by ssb45.

If the supplied array is an empty array, the value returned is NOT an array.

All that is required is to pre-initialize the result.

function natksort(&$aToBeSorted)
    {
    $aResult = array();
    $aKeys = array_keys($aToBeSorted);
    natcasesort($aKeys);
    foreach ($aKeys as $sKey)
        {
        $aResult[$sKey] = $aToBeSorted[$sKey];
        }
    $aToBeSorted = $aResult;
    return True;
    }
ssb45 at cornell dot edu
30-Jun-2005 01:58
The function that justin at booleangate dot org provides works well, but be aware that it is not a drop-in replacement for ksort as is.  While ksort sorts the array by reference and returns a status boolean, natksort returns the sorted array, leaving the original untouched.  Thus, you must use this syntax:

$array = natksort($array);

If you want to use the more natural syntax:

$status = natksort($array);

Then use this modified version:

function natksort(&$array) {
    $keys = array_keys($array);
    natcasesort($keys);

    foreach ($keys as $k) {
        $new_array[$k] = $array[$k];
    }

    $array = $new_array;
    return true;
}
justin at booleangate dot org
18-Jan-2005 10:04
Here's a handy function for natural order sorting on keys.

function natksort($array) {
  // Like ksort but uses natural sort instead
  $keys = array_keys($array);
  natsort($keys);

  foreach ($keys as $k)
    $new_array[$k] = $array[$k];

  return $new_array;
}
yaroukh at email dot cz
06-May-2004 05:08
I believe documentation should mention which of array-functions do reset the internal pointer; this one does so ...
pedromartinez at alquimiapaginas dot com
29-Nov-2003 04:58
A list of directories can be listed sorted by date (newer first) with this script. This is usefull if the directories contain (for example) pictures and you want the newer to appear first.

$maindir = "." ;
$mydir = opendir($maindir) ;

// SORT
$directorios = array();
while (false !== ($fn = readdir($mydir)))
{
    if (is_dir($fn) && $fn != "." && $fn != "..")
    {
        $directory = getcwd()."/$fn";
        $key = date("Y\-m\-d\-His ", filectime($directory));
        $directorios[$key] = $directory;
    }
}

ksort($directorios);
$cronosdir = array();
$cronosdir = array_reverse($directorios);

while (list($key, $directory) = each($cronosdir)) {
    echo "$key = $directory<bR>";
}

Pedro
09-Mar-2002 04:09
here 2 functions to ksort/uksort an array and all its member arrays

function tksort(&$array)
  {
  ksort($array);
  foreach(array_keys($array) as $k)
    {
    if(gettype($array[$k])=="array")
      {
      tksort($array[$k]);
      }
    }
  }

function utksort(&$array, $function)
  {
  uksort($array, $function);
  foreach(array_keys($array) as $k)
    {
    if(gettype($array[$k])=="array")
      {
      utksort($array[$k], $function);
      }
    }
  }
delvach at mail dot com
06-Nov-2001 10:29
A real quick way to do a case-insensitive sort of an array keyed by strings:

uksort($myArray, "strnatcasecmp");
sbarnum at mac dot com
20-Oct-2001 12:54
ksort on an array with negative integers as keys yields some odd results.  Not sure if this is a bad idea (negative key values) or what.

list> <krsort
Last updated: Fri, 20 Jun 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites