こんな質問をしなければならないとは思いもしませんでした... ksort
C# で PHP の機能を模倣する方法が必要です。
ここに問題があります... PHPはこれを行います...
PHP コード
$arr = array(
"tagValues" => "asdfasd",
"email" => "asdfasd",
"referrer" => "asdfasd",
"tags" => "asdfasd",
);
echo "Base array \n\n";
print_r($arr);
ksort($arr);
echo "\n\nksort'ed array \n\n";
print_r($arr);
PHP 出力
Base array
Array
(
[tagValues] => asdfasd
[email] => asdfasd
[referrer] => asdfasd
[tags] => asdfasd
)
ksort'ed array
Array
(
[email] => asdfasd
[referrer] => asdfasd
[tagValues] => asdfasd
[tags] => asdfasd
)
これをC#で行うと...
string[] sortedKeys = form.AllKeys.OrderBy(x => x).ToArray();
違う順番で出てきます。tags
当然のことながら、 の前tagValues
になります。それが真のアルファベット順です。
ksort
配列で大文字と小文字を区別する ASCII 処理を行うのは私の理解であり、それが別の順序で出力される理由です。
どうすればC#で実装できますか? できればLINQを使用してください。ありがとう!
裏話が気になる方は…
私は基本的に、FastSpring API ごとにアルファ順にソートされた入力パラメーターの MD5 ハッシュを作成しようとしています。彼らの PHP スニペットは、C# に変換したときの予想とは異なる動作をするため、ハッシュは常に正しくありません。