プリン+醤油=ウニみたいな組み合わせメニューを教えて!

単語 回数
 I   1
am 1
a 4
boy 2
. 4
This 1
is 3
pen 1
That 1
desk 1
He 1
  
     ↑
ずれてしまいますが回数と同じ行です。

と上のように出したいのですが何をすればいいのかがわかりません参考書等を見てforeachを使うことがわかったのですが使い方がいまいちよくわかりませんどうかお願いします!
自分なりにやってみたのが下です
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
$str ="I am a boy.This is a pen.That is a desk.He is a boy.";

$data = split(" ",$str);

foreach($data as $tango)
$count[tango]++;

foreach($count as $tango => $value){
print "<tr><td align='center'>$tango</td>";
print "<td align='right'>$value</td></tr>";
?>


</BODY>
</HTML>

A 回答 (3件)

foreach($data as $tango)


$count[tango]++;
と同じ処理をする関数に
$count = array_count_values($data);
があります

英文字だけの単語なら
$data = str_word_count($str, 1);
という関数もあります。
    • good
    • 0

大文字小文字を別カウントするといけないのでstrtolower()しておきました。


splitで区切るのはやや無理があるとおもいます。
英数以外の記号をどうするかよく考えておいたほうがよいでしょう。
たとえばアポストロフィーは単語の一部でピリオドなどは1語として
カウントすると以下のようになります。

<?php
$str ="I am a boy.This is a pen.That is a desk.He is a boy.A boy isn't a girl!?";
preg_match_all("/[A-Za-z0-9']+|[.,!?]/",$str,$match);

foreach($match[0] as $tango){
$count[strtolower($tango)]++;
}

print "<table border>";
foreach($count as $tango => $value){
print "<tr><td align='center'>{$tango}</td>";
print "<td align='right'>{$value}</td></tr>";
}
print "</table>";

?>
    • good
    • 0

> foreach($count as $tango => $value){


> print "<tr><td align='center'>$tango</td>";
> print "<td align='right'>$value</td></tr>";
> ?>

閉じ括弧がありませんね。
また、区切り文字を半角スペースにされてますから、

> $str ="I am a boy.This is a pen.That is a desk.He is a boy.";

のピリオドの後に、半角スペースを入れたほうが良いと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報