2014-11-19 3 views
-3

Это мой массив:способ сортировки массива по индексу ключа в PHP

$arr = array("pic0", "pic1", "pic2", "pic3", "pic4");

как я могу получить следующие строки:

$str1 = "pic1,pic2,pic3,pic4,pic0"; 
$str2 = "pic0,pic2,pic3,pic4,pic1"; 
$str3 = "pic0,pic1,pic3,pic4,pic2"; 
$str4 = "pic0,pic1,pic2,pic4,pic3"; 
$str5 = "pic0,pic1,pic2,pic3,pic4"; 
+0

Как являются строки, которые будут созданы ? Это не список всех перестановок или какой-либо реальной сортировки ... – Sirko

+0

Есть ли причина для сортировки быть таким? – Pooshonk

+0

Я не вижу там никакой логики, похоже, что они просто случайно помещены в строку ... Я что-то пропустил? –

ответ

1

Я бы использовать массив, а не пять строк:

$arr = array ("pic0", "pic1", "pic2", "pic3", "pic4"); 
$final = array(); 

for($i=1, $c = count($arr); $i <= $c; ++$i) // loop n times 
{ 
    $tmp = $arr; // tmp array 
    $x = $arr[$i-1]; // get element to put in the end 
    unset($tmp[$i-1]); // unset from the tmp array 
    $final[$i] = implode(",", $tmp) . "," . $x; // concatenate the array with $x in the end 
} 

print_r($final); 

/* 
Array 
(
    [1] => pic1,pic2,pic3,pic4,pic0 
    [2] => pic0,pic2,pic3,pic4,pic1 
    [3] => pic0,pic1,pic3,pic4,pic2 
    [4] => pic0,pic1,pic2,pic4,pic3 
    [5] => pic0,pic1,pic2,pic3,pic4 
) 
*/ 
1

Код ниже принимает массив и сортирует его с указанием индекса. И возвращает строку, разделенную запятыми, с элементами массива. Например, этот код примет 1-й элемент [0] «pic0» и поместит его в конец строки.

возвращает строку "pic1, pic2, pic3, pic4, Pic0"

$arr = array("pic0", "pic1", "pic2", "pic3", "pic4"); 

echo sort_by_index_to_string(0, $arr); 

function sort_by_index_to_string($num, $arr) 
{ 
    $v = $arr[$num]; 
    unset($arr[$num]); 
    $arr[$num] = $v; 

    return implode(",", $arr); 
} 
Смежные вопросы