2016-02-12 3 views
1

У меня есть массив строк, соответствующих именам изображений в каталоге.php reorder массив строк

Вот пример:

array(3) { [0]=> string(5) "3.png" [1]=> string(5) "2.jpg" [2]=> string(6) "4.jpeg" } 

Как я могу изменить порядок этого массива так, чтобы числа до расширений возрастают, например, на примере ниже:

array(3) { [0]=> string(5) "2.jpg" [1]=> string(5) "3.png" [2]=> string(6) "4.jpeg" } 
+0

Звучит как сортировка, да? – AbraCadaver

ответ

1

использование sort функция:

$array = array(
    '2.png', 
    '4.png', 
    '1.png', 
); 

sort($array); 

print_r($array); 

Выход:

Array ([0] => 1.png [1] => 2.png [2] => 4.png) 

Более подробно взглянуть на: PHP Array Sorting

+0

О, я искал сложного! как разделение, что было до точки, преобразование его в целое и т. д. ... приятная функция. – michltm

0

Использование вида() или asort();

<?php 
    $fruits = array("lemon", "orange", "banana", "apple"); 
    sort($fruits); 
    foreach ($fruits as $key => $val) { 
     echo "fruits[" . $key . "] = " . $val . "\n"; 
    } 
?> 

fruits[0] = apple 
fruits[1] = banana 
fruits[2] = lemon 
fruits[3] = orange 

вы можете найти больше здесь: http://php.net/manual/en/array.sorting.php

1

Вот аккуратная функция манипулировать положение (индекс) любой существующего элемента в массиве:

$sampleArray = array('a', 'b', 'c', 'd', 'e'); 
print_r($sampleArray); 
print_r(arrayMoveElement('c',$sampleArray,1)); 
exit; 

function arrayMoveElement($element, &$array, $position=0){ 
    $index = array_search($element, $array);  // Search for the element in the array and returns its current index 
    if($index == false){      // Make sure the element is present in the array 
     return false; 
    } 
    else{ 
     unset($array[$index]);      // Removes the element from the array 
     $array = array_values($array);     // Re-sorts the indexes 
     if(!is_int($position)){return false;}   // Position of the element that should be inserted must be a valid integer (index) 
     array_splice($array, $position, 0, $element); // Inserts the element to the desired position (index) starting from 0 

     return $array; 
    } 
}// END function arrayMoveElementFirst($element, &$array){ 

Выход:

Массив ([0] => a [1] => b [2] => c [3] => d [4] => e)

Array ([0] => a [1] => c [2] => b [3] => d [4] => e)

Обратите внимание, что параметр позиции является необязательным, и если опустить эту функцию просто перемещает элемент в начало массива. Кроме того, это может быть отрицательное целое число, в этом случае позиция (индекс) элемента вычисляется с его конца.

Существует валидация, которая гарантирует, что элемент существует в массиве, и что новая позиция предоставляется как целочисленное значение.

Просмотреть комментарии кодов для получения более подробной информации.

Смежные вопросы