【125日目】人気記事へのリンクを作成したい-2
Posted: Last Update:
昨日から「人気記事へのリンクをトップページなどに追加する」という課題に挑戦しています。昨日は思いのほか進んだので、興味張り切っていきたいと思います!
昨日までの成果
昨日はアクセス数を集計しているファイルの内容を取り出し、配列の変数に代入することができました。配列「$link」には、URLとアクセス数が代入されています。書いたPHPはこんな感じです。
<?php
$str = file("$mypath/top/access.txt");
foreach($str as $value){
$devide = strpos($value, " ");
$length = strlen($value);
$url = substr($value, 0, $devide);
$count = str_replace(" count:", "", substr($value, $devide, $length));
$link[$url] = $count;
}
var_dump($link);
?>
$str = file("$mypath/top/access.txt");
foreach($str as $value){
$devide = strpos($value, " ");
$length = strlen($value);
$url = substr($value, 0, $devide);
$count = str_replace(" count:", "", substr($value, $devide, $length));
$link[$url] = $count;
}
var_dump($link);
?>
今日は、まず「$link」をアクセス数順に並べ替え、次にリンクを作成していきたいと思います。
配列をアクセス数順に並び替える
これは以前にやったことがあるかも?記事を書いた時に使いました。「krsort」を使うと降順に並ぶはずなんですか…。うまくいきません…。
いろいろ見ていくうちに、配列の書き方が間違っていることに気付きました。キーを数字(アクセス数)にしないとおかしいはずです。で、こんなPHPになりました。
<?php
$str = file("$mypath/top/access.txt");
foreach($str as $value){
$devide = strpos($value, " ");
$length = strlen($value);
$url = substr($value, 0, $devide);
$count = str_replace(" count:", "", substr($value, $devide, $length));
$link[intval($count)] = $url;
}
krsort($link);
foreach($link as $value){
echo $value."<br>";
}
?>
$str = file("$mypath/top/access.txt");
foreach($str as $value){
$devide = strpos($value, " ");
$length = strlen($value);
$url = substr($value, 0, $devide);
$count = str_replace(" count:", "", substr($value, $devide, $length));
$link[intval($count)] = $url;
}
krsort($link);
foreach($link as $value){
echo $value."<br>";
}
?>
無事に書き出せたのですが、…しかし、おかしいな…。URLは18個あるはずなのに、8個しか書き出せていません…。
時間切れ!
時間が来てしまいました。今日はここまでです。
PHPがうまく動いていない状態での時間切れなので、なんだか不完全燃焼ですが…。そういう日もあるさ!
明日は、なぜURLが少なくなってしまったのか調べて修正し、リンクまで作成できたらいいな。では、また明日!
