Web студия "GrandView"
  Главная   Написать Контакты
   
   
О проекте
Руководство php
 

ksort

(PHP 3, PHP 4, PHP 5)

ksort -- Отсортировать массив по ключам

Описание

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

Сортирует массив по ключам, сохраняя отношения между ключами и значениями. Функция полезна, в основном, для работы с ассоциативными массивами.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример 1. Пример использования ksort()

<?php
$fruits
= array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
reset($fruits);
while (list(
$key, $val) = each($fruits)) {
    echo
"$key = $val
"
;
}
?>

Результат выполнения данного примера:

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

Вы можете изменить поведение сортировки, используя дополнительный параметр sort_flags, подробнее см. sort().

См. также asort(), arsort(), krsort(), uksort(), sort(), natsort() и rsort().

Замечание: Второй параметр был добавлен в PHP 4.



list> <krsort
Last updated: Sat, 27 Jan 2007
 
add a note add a note User Contributed Notes
ksort
erikjr at gmail dot com
18-Sep-2007 05:06
Just a short note on "don dot hosek at gmail dot com" remark, the ksort returns TRUE or FALSE and performs its actual operation directly on the array in the function call.

Thus; it would be

<?php
ksort
( $a );
?>

instead of

<?php
$a
= ksort ( $a );
?>

as noted in his piece. I didn't understand why my sorting kept returning '1' at first, but that was it.
maxx at opentvnet dot hu
20-Aug-2007 06:17
Beware! The function removes the keys with an empty value from the array. :-(
don dot hosek at gmail dot com
24-May-2007 06:37
It's worth noting that ksort is also handy if you want to be able to do manipulations on an numerically-keyed array which may not have been initialized in numerical order:

$a[2]=7;
$a[0]=1;
$a[1]=6;

foreach($a as $b) {
  echo "$b ";
}

$a = ksort($a);

foreach($a as $b) {
  echo "$b ";
}
05-Nov-2006 05: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 01: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 04: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 01: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 08:08
I believe documentation should mention which of array-functions do reset the internal pointer; this one does so ...
pedromartinez at alquimiapaginas dot com
28-Nov-2003 07: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 07: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 01: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
19-Oct-2001 03: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: Sat, 27 Jan 2007
 
 
Новости
11 июля 2007
Сайт запущен
© 2007 info@grandviewstudio.com

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/sites/grandviewstudiocom/www/65f67d67a94ad980786580ae69e11c07/sape.php on line 324

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/sites/grandviewstudiocom/www/65f67d67a94ad980786580ae69e11c07/sape.php on line 330
Z058440144362 Z348613067571