2011-07-08 4 views
0

私は、ユーザーから別の順序にフィードされている4文字列をソートしようとしています。私はそれを "bcad"に変換する "abcd"とタイプするかもしれません。 Pphp string manipulation nonrandom sort

<?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 
?> 

任意の助けいただければ幸いです。ここ

が動作していない私の試みの一例です。

+0

SubStringメソッドは何ですか? '$ formatted_date = $ mixedDate [1]。$ mixedDate [2]。$ mixedDate [0]。$ mixedDate [3];'。 – Nightfirecat

+1

私は混乱しています。これはランダムであると思われますか?しかし、あなたのコードはuserDateと言います。あなたは日付を再配置しようとしていますか?この場合、PHPの組み込み関数が既に存在することがわかります。文字列は単なる文字配列なので、そのように操作することもできます。 – Matt

+0

@Matt、実際の日付ではありませんが、それは理にかなっていない電気部品のコードですが、それは奇妙なフォーマットの製造日です。 –

答えて

1

$formatted_date = $mixedDate[1].$mixedDate[2].$mixedDate[0].$mixedDate[3]; 

そのように、あなたがするので、substringメソッドを何度も呼び出しを気にする必要はありません個々のキャラクターを動かすだけです。

0

split()をご覧ください。それは文字列を取り、デリミタは文字列を配列に分割します。ユーザーに特定の形式を使用させるか、入力文字列に正規表現を使用してdd/mm/yyyyやdd-mm-yyyyなどの既知の形式に日付を入力し、ハイフンまたは/を区切り記号として使用します。

文字列を配列に分割したら、好きなように並べ替えることができます。

+1

入力が指定されていれば、 'split()'よりも 'str_split()'が適していると言えます。 (彼の変数名はその日付を暗示しているようだが、コードと質問は区切り文字がないことを意味し、単一文字を扱っていることを意味する) – Spudley

0

これは非常に簡単です。

その後、

$ mixedDate = 21-12-2010

場合は、エコーのsubstr($ mixedDate、3、 2)この

を試してみてください.'-」 .substr($ mixedDate、0、 2)。 ''。substr($ mixedDate、6);

これは、この形式が固定されていると仮定されている

2010年12月21日

をもたらすであろう。

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

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

echo $formatted_date; 
?> 

curly構文を使用すると、文字列からその文字を1つだけ取得できます。

あなたのサンプル文字列、abcdで正常に動作し、$_REQUEST['userDate']abcdある場合bcadにそれを回すことに留意すべきです。あなたはかなり単純ような何かをすることによってこれを行うことが

:コメントからコピー

+0

良い点、私はそのキャストをintに取り除かなければならない。私は、日付が「2011年」のように数字になるという馬鹿馬鹿しい前提を立てましたが、その仮定が有効であることは何もありません。最後の 'is'は' if'の固定された感謝のためのものでした。 –

+1

+1 OPを理解する。また、最後の行をチェックして、あなたのコードに 'userData'と' userDate'を書き留めました。 –

+0

ありがとう、私もそれを修正しました。手でタイプしてコピー&ペーストしないと、何が起こるのですか?ところで、私はあなたの答えを+1したので、あなたの時間が少なくともそれの価値があったことを願っています。 –

0

使用str_split()単一文字に文字列を分割する:

$char_array = str_split($input_string); 

あなたは正確に何をしたいの順序を知っている、とあなただけの4つの文字を持っている場合は、ここからは実際にちょうどそれをあなたが望んでいた方法を行うことができますあなたの質問から、などのように、バック単一の文字列に配列要素を連結します。あなたのニーズがより複雑な場合は、文字列をソートし、崩壊することができます

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


使用sort()順に文字を入れる:

sort($char_array); 

それとも、別のソート順が必要な場合は、PHPが提供するその他の関連するソート機能の一つ。要件に応じた並べ替え順序が必要な場合は、usort()を使用して並べ替えの仕組みを定義する関数を記述できます。

そして、単一の文字列に再加入の文字implode()を使用して:

$output_string = implode($char_array); 

お役に立てば幸いです。