2017-03-02 22 views
0

私はアルファベット順にソートされた配列を持っています。PHP配列のソートとスキップのアンダースコア

foreach($array as $item) { 
    echo $item; 
} 
  • どのように私はそれをソートし_文字をスキップすることができます

    Array 
    (
        [0] => C:\xampp\htdocs\_luke 
        [1] => C:\xampp\htdocs\_zod 
        [2] => C:\xampp\htdocs\jess 
        [3] => C:\xampp\htdocs\peter 
    ) 
    

    私のコードは次のようなものでしょうか?

  • _を取り除くことはできません。なぜなら、私がループしているときにはまだ必要なのでです。
  • 私はキー番号を保持することには関心がありません。私はとにかくforeachループをやっています。

私が探している結果がこれです:あなたが探しているもの

Array 
(
    [0] => C:\xampp\htdocs\jess 
    [1] => C:\xampp\htdocs\_luke 
    [2] => C:\xampp\htdocs\peter 
    [3] => C:\xampp\htdocs\_zod 
) 
+0

'usort'と適切な比較を使用してください。 'ltrim($ a、 '_')<=> ltrim($ b、 '_')'。 – deceze

+0

整数キーの代わりに、barとksort()なしでフォルダ名でキー値を設定します。 –

答えて

3

比較を行うに取り付けられたコールバック関数でusortです。

はこのようにそれを使用します。

usort($array, function($elemA, $elemB) { 
    return strcmp(str_replace("_", "", $elemA), str_replace("_", "", $elemB)); 
}); 

これは、「_」アンダースコアをstrcmpを使用しますが無視して、あなたの要素を比較します。

+1

これは、文字列全体の*すべての*アンダースコアを無視します。 – deceze

+0

OPは特別な解析が必要だとは言及していないので、_all_アンダースコアは無視されます。 – Kleskowy

+1

@Kleskowy私は受け入れられた答えとしてあなたを設定しました。私は自分自身もそれに取り組んだ。私はいくつかのCMSヘルパー機能を使っているので、ちょっと "ちょっと"です。しかし、それはあなたのコードに基づいているし、それは多くを変更しました。ありがとう! –

0
function cmp($a, $b) 
{ 
    $a = preg_replace('/\_/', '', $a); 
    $b = preg_replace('/\_/', '', $b); 

    return strcmp($a, $b); 
} 

$array = Array 
(
    'C:\xampp\htdocs\_luke', 
    'C:\xampp\htdocs\_zod', 
    'C:\xampp\htdocs\jess', 
    'C:\xampp\htdocs\peter' 
); 

usort($array, "cmp"); 
print_r($array); 

テキストを「均等化」するためのヘルパーメソッドを使用します。

0

私は既に受け入れられた別の答えを設定しましたが、ここで私は結局何をしましたか?最初のアンダースコアのみを処理する方法のヒントを他の人に与えることができます。

usort($folders, function($a, $b) { 
    return strcmp(
     ltrim(basename($a), '_'), 
     ltrim(basename($b), '_') 
    ); 
}); 
+0

これらのヘルパー関数が 'ltrim($ a、 '_')'以上に追加しても大丈夫だとは確信していません。 – deceze

+0

@decezeあなたはStack Overflowで生きているようです。 :)とにかく、あなたのソリューションは常に正しいですし、私のコードはKirby CMSの依存関係がなくてもずっと短くなっています。ありがとう! –

+1

コードがコンパイルされている間、短いダウンタイムが多く発生する...;) – deceze

関連する問題