2017-11-15 10 views
0

マイコード(PHP)は注意を引き起こすSORT_STRINGフラグとアレイをソート:文字列への変換アレイ

アレイ

switch (strtoupper($OBJType)) 
    { 
    case "FILE" : 
     $SortWith = "A:"; 
     break; 
    case "DIR" : 
     $SortWith = "B:"; 
     break; 
    Default: 
     $SortWith = "C:"; 
    } 

$dirArray[] = array(
        'SortBy' => $SortWith, 
        'Data' => $OBJ 
        ); 

sort(($dirArray),SORT_STRING); 

に上記それをソートする私の試みエラーログファイルに「配列から文字列への変換」通知を作成します。私は次のことを試みたが、私はそれが働いているかどうかはわからない。配列には、現在のディレクトリのファイルとディレクトリのサブリストが含まれています。私はすべてのファイルを一番下のディレクトリで一番上に浮かべたいと思います。ファイル名とDIR名は、リターンリストと共にソートされるべきです。私はarray_multisortを使用する必要があると思うが、私はそれを理解することができない - どんな助けが評価されるだろう

答えて

0

OK検索し、私が見つけたものの周りに私の頭を包み込むのを試みる。私はこのコードを使用しました。私はそれが働いていると思うが、もう少しテストしなければならない。より良い/より簡単な方法があれば、私は提案に公開されています...

//First Sort Item 
$SA1 = array(); 
foreach ($dirArray as $sVal) 
     { 
      $SA1[] = $sVal['SortBy']; 
     } 
//Second Sort Item  
$SA2 = array(); 
foreach ($dirArray as $dVal) 
     { 
      $SA2[] = $dVal['Data']; 
     } 
//print "<BR> SA1 "; print_r($SA1); print "<BR> SA2 "; print_r($SA2); 
array_multisort($SA1, SORT_ASC, SORT_STRING, $dirArray, $SA2, SORT_ASC, SORT_STRING, $dirArray); 
+0

私はこれがファイルを最初にソートしているのか分からない – DoubleD

0

私のように無視する場合があります。私が最後にしたコードはここにあります。私はこれがうまくいくと思います。私は

お知らせを理解する助けhttps://doc.bccnsoft.com/docs/php-docs-7-en/function.array-multisort.html

$DSP = "&nbsp;&nbsp;"; 

foreach ($dirArray as $key => $row) 
     { 
      $SK1[$key] = $row['SortBy']; 
      //$SK2[$key] = StrToUpper($row['Data']); //Don't need this if we use the SORT_FLAG_CASE option on array_multisort 
      $SK2[$key] = $row['Data']; 
     }  
//print "<BR><BR> Before Sort dirArray ";print_r($dirArray);print"<BR>"; 
//print "<BR>Sort Key: $DSP SK1 "; print_r($SK1); print "<BR>Sort Key: $DSP SK2 "; print_r($SK2); 
// This sort is not CASELESS so "A" is not the same as "a"// array_multisort($SK1, SORT_ASC, $SK2, SORT_STRING, SORT_ASC, $dirArray); 
array_multisort($SK1, SORT_ASC, $SK2, SORT_STRING|SORT_FLAG_CASE, SORT_ASC, $dirArray); 
//print "<BR><BR> After Sort dirArray ";print_r($dirArray);print"<BR>"; 

賞賛| array_multisort内の($ SK1、SORT_ASC、$ SK2、SORT_STRING | SORT_FLAG_CASE、SORT_ASC、$ dirArray);

関連する問題