2014-01-28 4 views
0

У меня есть список численных значений, разделенных запятой. В этой строке будет только список чисел.Переупорядочить значения, разделенные запятой

Пример: 52,187,65,278,288,45,621

Я хочу функцию PHP, которая будет переформатировать строку таким образом, что я могу указать местоположение ряда.

Если я хочу 45 в качестве первого значения, то я должен быть в состоянии указать 45 = 0, то функция даст мне результат, который 45,52,187,65,278,288,621

Функция должна также помочь мне указать местоположение несколько номеров.

+0

Я обычно получаю 5 downvotes для такого вопроса ... Просьба представить вашу работу до сих пор. –

+1

, и если вы укажете 278 = 335, что должно произойти? или 65 = 2. – dfsq

+2

Вы можете сделать массив с этими значениями с помощью функции explode(), заказать его и повторно (0) –

ответ

0

Самый простой способ, который я могу придумать, - использовать explode() в строке для создания массива и array_search(), чтобы найти значение. Может быть хорошей отправной точкой.

0

Вы можете использовать эти три шага

<?php 
$myArray = explode(",", $myString); 
$shortedArray = sort($myArray); 
$shortedString = implode(",", $shortedArray); 
echo $shortedString; 
?> 
0

первым вы хотите создать массив строки, взрывая его с запятыми $arr = explode(",",$string); вы тогда хотите, чтобы соответствовать параметры и установить место в массиве, попробуйте найти с помощью array_search, чтобы получить индекс, вытащите его с помощью array_splice, затем вставьте в нужный индекс, как указано. После того как вы сделали все ваши сортировки присоединиться массив вместе с Implode: $string = implode(",", $arr);

0

попробовать этот

<?php 

$str='52,187,65,278,288,45,621'; 
$val ='45'; 
$array = array(); 
$array = explode(',',$str); 
sort($array); 
$i=0; 
foreach ($array as $k) { 

    if ($k<$val){ 
     unset ($array[$i]); 
    } 

    $i=$i+1;  
} 
print_r($array); 
?> 
0

Вот длинный код

<?php 
$str = '52,187,65,278,288,45,621'; 
$orders = array(45 => 3,52=>2); 

print_r(reOrder($str,$orders)); 

function reOrder($string,$orders){ 
    $array = explode(',', $string); 
    $result = array(); 
    foreach($array as $index=>$element){ 
     if(isset($orders[$element])){ 
      if(!isset($result[$orders[$element]])){ 
       $result[$orders[$element]] = $element; 
      } 
      else{ 
       $temp = $result[$orders[$element]]; 
       $result[$orders[$element]] = $element; 
       $count = count($result); 
       $flag = 0; 
       for($i=0;$i<$count;$i++){ 
        if(!isset($result[$i])){ 
         $result[$i] = $temp; 
         $flag = 1; 
         break; 
        } 
       } 
       if($flag == 0){ 
        $result[] = $temp; 
       } 
      } 
     } 
     else{ 
      $count = count($result); 
      $flag = 0; 
      for($i=0;$i<$count;$i++){ 
       if(!isset($result[$i])){ 
        $result[$i] = $element; 
        $flag = 1; 
        break; 
       } 
      } 
      if($flag == 0){ 
       $result[] = $element; 
      } 
     } 
    } 
    ksort($result); 
    return $result; 
} 
?> 
Смежные вопросы