php字符串操作非随机排序

php字符串操作非随机排序,php,string,sorting,Php,String,Sorting,我试图将用户输入的4个字符的字符串排序为不同的顺序。例如,他们可能会键入“abcd”,然后我将其转换为“bcad” 下面是一个我的尝试不起作用的例子:p <?php $mixedDate = $_REQUEST['userDate']; $formatted_date = firstSubString($mixedDate,2).secondSubString($mixedDate,3).thirdSubString($mixedDate,1).fourthSubString($mix

我试图将用户输入的4个字符的字符串排序为不同的顺序。例如,他们可能会键入“abcd”,然后我将其转换为“bcad”

下面是一个我的尝试不起作用的例子:p

<?php

$mixedDate = $_REQUEST['userDate'];

$formatted_date = firstSubString($mixedDate,2).secondSubString($mixedDate,3).thirdSubString($mixedDate,1).fourthSubString($mixedDate,4);

//... maybe some other stuff here then echo formatted_date
?>

如果您有任何帮助,我们将不胜感激。

请查看php。它接受一个字符串和一个分隔符,然后将该字符串拆分为一个数组。强制用户使用特定格式或在输入字符串上使用正则表达式将日期转换为已知格式,如dd/mm/yyyy或dd-mm-yyyy,然后使用连字符或/作为分隔符

一旦字符串被拆分成一个数组,您就可以按自己喜欢的方式重新排列它。

这非常简单

如果

$mixedDate=21-12-2010

那么,试试这个

echo substr($mixedDate,3, 2) “-”子项($mixedDate,0, 2) “-”子项($mixedDate,6)

这将导致

12-21-2010

这是假设格式是固定的。


<?php
$mixedDate = $_REQUEST['userDate'];

$formatted_date = $mixedDate{1}.$mixedDate{2}.$mixedDate{0}.$mixedDate{3};

echo $formatted_date;
?>
curly语法只允许从字符串中获取一个字符

需要注意的是,如果
$\u请求['userDate']
是从注释中复制的
abcd
,则此操作可以正确处理示例字符串
abcd
,并将其转换为
bcad

您可以通过执行以下操作来完成此操作:

$formatted_date = $mixedDate[1].$mixedDate[2].$mixedDate[0].$mixedDate[3];
这样,您就不必多次调用子字符串方法,因为您只需移动单个字符。

使用
stru split()
将字符串拆分为单个字符:

$char_array = str_split($input_string);
如果您确切地知道您想要的顺序,并且您只有四个字符,那么从这里您实际上可以按照您的问题中希望的方式执行,并将数组元素连接回单个字符串,如下所示:

$output_string = $char_array[2].$char_array[3].$char_array[1].$char_array[4];

如果您的需求更复杂,可以对字符串进行排序和内爆:

使用
sort()
对字符进行排序:

sort($char_array);
或者PHP提供的其他相关排序函数之一,如果您需要不同的排序顺序。如果您需要特定于您的需求的排序顺序,可以使用
usort()
,它允许您编写一个定义排序工作方式的函数

然后使用
内爆()


希望有帮助。

你的第一、第二等是什么。。。子串方法?您只需执行以下操作即可完成此操作:
$formatted\u date=$mixedDate[1]。$mixedDate[2]。$mixedDate[0]。$mixedDate[3]。我很困惑。这是随机的吗?但是你的代码会显示userDate。你想重新安排日期吗?如果是这样的话,您知道已经有了php内置的函数。还要记住,字符串只是一个字符数组,所以你也可以这样操作它。@Matt,对不起,这不是实际日期,它是一个电气部件的代码,没有意义,但它是一个奇怪格式的制造日期。@C.Johns那么它是一个日期吗?日期的格式是什么?很抱歉答复晚了。。我已经做了一系列的测试,因为在十六进制和整数之间有很多的值操作,等等。但是我要告诉你@Nightfirecat是对的。谢谢。说得好,我得把那个“转换为int”的东西去掉。我做了一个愚蠢的假设,日期是一个数字,比如2011年,但是没有任何东西能证明这个假设。最后一个
的意思是
if
,修复了,谢谢。+1了解操作。另外,检查最后一行,您在代码中注意到了
userData
,但是
userDate
。谢谢,我也修复了它。这就是我用手打字而不是复制粘贴时发生的事情!顺便说一句,我做了+1你的答案,所以我希望你的时间至少是值得的。考虑到指定的输入,我想说
stru-split()
split()
更合适。(他的变量名似乎暗示它是一个日期,但代码和问题暗示它没有任何分隔符,他处理的是单个字符)
$output_string = implode($char_array);