2014-01-28 155 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()的這個值創建一個數組,然後命令它,並再次implode() –

回答

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一起抽出,然後按指定插入正確的索引。 你做了所有的排序與破滅重新走到一起加入數組後:$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; 
} 
?>