我正在尝试学习一些PHP,而且我几个小时来一直在反对这个问题。在这一点上,我很确定我已经使它变得比它应该的复杂得多(我刚抓到的最后一次尝试是~100行长(不可否认,很多评论)。
这是我正在尝试做的事情:
读入一个字符串,将字符放在一个关联数组中,字母数字在其中 是一个关联的单词数组,按字母顺序排序,以及它们出现的次数。
该系列的下一个问题建立在这个问题的基础之上,所以我基本上已经死了,直到我能解决这个问题。
有什么建议吗?
答案 0 :(得分:1)
$sample = "this my is sample which is simple";
$simple = explode(' ', $sample);
$words = array();
foreach ($simple as $word) {
$size = strlen($word);
if (!isset($words[$size])) {
$words[$size] = array();
}
if (!isset($words[$size][$word])) {
$words[$size][$word] = 0;
}
$words[$size][$word]++;
}
foreach ($words as &$w) {
ksort($w);
}
ksort($words);
这有点令人讨厌,但它完成了工作。请注意,我颠倒了第一个“my”和“is”来显示字母顺序重新排序。
答案 1 :(得分:0)
假设没有标点符号担心尝试这个:
$words_by_length = array();
$string = "this is my sample which is simple";
$words = explode(' ', $string); //split the string by space to find all the words
foreach($words as $word) {
$word_length = strlen($word);
if(!isset($words_by_length[$word_length])) $words_by_length[$word_length] = array();
$words_by_length[$word_length][] = $word;
}
ksort($words_by_length);
foreach($words_by_length as $length => $words) {
$words_by_freq = array();
foreach($words as $word) {
if(!isset($words_by_freq[$word])) $words_by_freq[$word] = 0;
$words_by_freq[$word]++;
}
ksort($words_by_freq);
$words_by_length[$length] = $words_by_freq;
}