我有一个逗号分隔的数值列表。这个字符串只有数字列表。
示例:52,187,65,278,288,45,621
我想要一个php函数,它将重新格式化字符串,以便我可以指定数字的位置。
如果我想要45作为第一个值,那么我应该能够指定45 = 0然后该函数将为我提供一个结果,即45,52,187,65,278,288,621
该功能还可以帮助我指定多个数字的位置。
答案 0 :(得分:0)
我能想到的最简单的方法是在字符串上使用explode()
创建数组,并使用array_search()
来查找值。可能是一个很好的起点。
答案 1 :(得分:0)
您可以使用这三个步骤
<?php
$myArray = explode(",", $myString);
$shortedArray = sort($myArray);
$shortedString = implode(",", $shortedArray);
echo $shortedString;
?>
答案 2 :(得分:0)
首先,您希望通过使用逗号$arr = explode(",",$string);
对其进行爆炸来生成字符串数组,然后您希望匹配选项并在数组中设置位置,尝试使用array_search
进行搜索索引,用array_splice
拉出来,然后插入指定的正确索引。
完成所有排序后,将数组与implode一起重新加入:$string = implode(",", $arr);
答案 3 :(得分: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);
?>
答案 4 :(得分: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;
}
?>