0

テキスト ファイルからいくつかの単語を読み取り、file() 関数を使用して各単語を配列要素として格納します。次に、各単語を並べ替えて、並べ替えられた文字列をキーとして格納し、元の文字列を次のように値として格納する連想配列を作成する必要があります。

$hash_table = array( 'sorted_string' => 'original string' );

ファイルから読み取ったすべての単語をループして昇順に並べ替えますが、それを連想配列にプッシュすることになると、完全に失われます。連想配列の作成方法を教えてもらえますか?

4

3 に答える 3

1

私があなたの質問を正しく理解しているなら、これを考慮してください:

$sorted;   //sorted array
$original; //original array

foreach($sorted as $key){
  $index = 0;
  $new_array[$key] = $original[$index++];
}
于 2013-06-17T11:46:20.703 に答える
0

これがあなたが望むものです:

<?php
//create an array with words, similar to what you get with file()
$str = "here is a list of random words that will be sorted";
$array = explode(" ", $str);

//a place to store the result
$result = array();

//check each value
foreach($array as $word) {
  //str_split will create an array from a string
  $letters = str_split(trim($word));
  //sort the letters
  sort($letters);

  //implode the letters again to a single word
  $sorted = implode($letters);

  //add to result
  $result[$sorted] = $word;
}

//dump
var_dump($result);

//sort on the key
ksort($result);

//dump
var_dump($result);
?>

これは出力されます

//unsorted
array(11) {
  ["eehr"]=>
  string(4) "here"
  ["is"]=>
  string(2) "is"
  ["a"]=>
  string(1) "a"
  ["ilst"]=>
  string(4) "list"
  ["fo"]=>
  string(2) "of"
  ["admnor"]=>
  string(6) "random"
  ["dorsw"]=>
  string(5) "words"
  ["ahtt"]=>
  string(4) "that"
  ["illw"]=>
  string(4) "will"
  ["be"]=>
  string(2) "be"
  ["deorst"]=>
  string(6) "sorted"
}

//sorted on key
array(11) {
  ["a"]=>
  string(1) "a"
  ["admnor"]=>
  string(6) "random"
  ["ahtt"]=>
  string(4) "that"
  ["be"]=>
  string(2) "be"
  ["deorst"]=>
  string(6) "sorted"
  ["dorsw"]=>
  string(5) "words"
  ["eehr"]=>
  string(4) "here"
  ["fo"]=>
  string(2) "of"
  ["illw"]=>
  string(4) "will"
  ["ilst"]=>
  string(4) "list"
  ["is"]=>
  string(2) "is"
}
于 2013-06-18T06:48:57.177 に答える