Warning: Creating default object from empty value in C:\xampp\htdocs\nikonikoXML.php on line 242
というエラーが出て原因がわからず困っています。
当該箇所は$x[$i]->URL=$sp[$i]; の部分で、値が入らず空になってると思われます。
宣言の仕方がわるいのかわかりません
知っておられるかたお力を貸して頂けると幸いです
よろしくお願いします。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ライブドアの天気予報を表示する</title>
</head>
<body>
<?php
$filename = 'test.txt';
$filename = 'sst.txt';
$filename = 'gyousuu.txt';
$filename2 = 'RSSlog.txt';
$i = 0;//総検索済み回数
$v = 0;// function Filewriteでつかう存在する動画の通し番号(0,1,2,3,4,5・・・・)
$j = 0;// function Filewrite存在する動画の通し番号(0,1,2,3,4,5・・・・)
$size= 0;
//ファイルに記録する構造体(配列)グロバル変数
$ono = array();
$oIsno = array();//sm○○○から実際に存在する動画ナンバー$jを保存しておく
$serchtimes = array();//検索済み回数$iを保存しておく
function filewrite2($filename,$somecontent){
// ファイルが存在しかつ書き込み可能かどうか確認します
if (is_writable($filename)) {
// この例では$filenameを追加モードでオープンします。
// ファイルポインタはファイルの終端になりますので
// そこがfwrite()で$somecontentが追加される位置になります。
if (!$URLandle = fopen($filename, 'a')) {
echo "Cannot open file ($filename)";
exit;
}
// オープンしたファイルに$somecontentを書き込みます
if (fwrite($URLandle, $somecontent) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
echo "Success, wrote ($somecontent) to file ($filename)";
fclose($URLandle);
} else {
echo "The file $filename is not writable";
}
}
function fileread($filename2){
// ファイルの中身を読んで文字列に格納する
$URLandle = fopen($filename2, "r");
$contents = fread($URLandle, filesize($filename2));
fclose($URLandle);
return $contents;
}
function numberfilewrite($y){
global $v;
global $i;
global $tousi;
$filename = 'gyousuu.txt';
$somecontent = $v."<>".$tousi."<>".$i."\r\n";//もうすでにループを終えたあとにこの関数を呼び出してるので$yには最後の存在した動画ナンバー$iには検索した回数が入ってる
// ファイルが存在しかつ書き込み可能かどうか確認します
if (is_writable($filename)) {
// この例では$filenameを追加モードでオープンします。
// ファイルポインタはファイルの終端になりますので
// そこがfwrite()で$somecontentが追加される位置になります。
if (!$URLandle = fopen($filename, 'a')) {
echo "Cannot open file ($filename)";
exit;
}
// オープンしたファイルに$somecontentを書き込みます
if (fwrite($URLandle, $somecontent) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
echo "Success, wrote ($somecontent) to file ($filename)";
fclose($URLandle);
} else {
echo "The file $filename is not writable";
}
}
function write($filename){
global $x,$v,$size;// 通し番号を付けとく
global $tousi;
$v+=1;
for($i=0 ; $i<$size; $i++) {
$somecontent .= $x[$i]->num."<>".$x[$i]->sm."<>".$x[$i]->imgurl."<>".$x[$i]->title."<>".$x[$i]->setsumei."<>".$x[$i]->view."<>".$x[$i]->mylist."<>".$x[$i]->coment."<>".$x[$i]->URL."\r\n";
}
$tousi= $n;
// ファイルが存在しかつ書き込み可能かどうか確認します
if (is_writable($filename)) {
// この例では$filenameを追加モードでオープンします。
// ファイルポインタはファイルの終端になりますので
// そこがfwrite()で$somecontentが追加される位置になります。上書きモード
if (!$URLandle = fopen($filename, 'a')) {
echo "Cannot open file ($filename)";
exit;
}
// オープンしたファイルに$somecontentを書き込みます
if (fwrite($URLandle, $somecontent) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
fclose($URLandle);
} else {
echo "The file $filename is not writable";
}
}
function lwws($sm){//ログにあるurlから取得したsm○○○○でxmlを再取得
global $x,$size;//グローバル変数の構造体xの値を関数内で変更するにはこう宣言する
for($i=0 ; $i<$size; $i++) {
$rssurl = "http://ext.nicovideo.jp/api/getthumbinfo/".$sm[$i];
$xml = simplexml_load_file($rssurl);
$x[$i]->num = $i;
$x[$i]->sm = $sm[$i];
$x[$i]->imgurl = $xml->thumb->thumbnail_url;
$x[$i]->title = $xml->thumb->title;
$x[$i]->setsumei = $xml->thumb->description;
$x[$i]->mylist =(int) $xml->thumb->mylist_counter;
$x[$i]->view =(int) $xml->thumb->view_counter;//なぜかstring型になってるんで後でソートする為int型にしておく
$x[$i]->coment =(int) $xml->thumb->comment_num;
$x[$i]->URL = $xml->thumb->watch_url;
}
}
function hyouzi(){
global $x,$size;//グローバル変数の構造体xの値を関数内で変更するにはこう宣言する
for($i=0 ; $i<$size; $i++){
$outdata .= "<table style='width: 300px; height: 200px; border:1px solid #ff00ff;'>";
$outdata .= "<tr><td align='center'><a href=".$x[$i]->URL."><img src=".$x[$i]->imgurl."></a></td></tr><br>";
$outdata .= "<tr><td align='center'><a href=".$x[$i]->URL.">".$x[$i]->title."</a>";
$outdata .= "</td></tr>\n";
$outdata .= "<tr><td>".$x[$i]->setsumei."</td></tr>";
$outdata .= "<tr><td>タグ:".$tag."</td></tr>";
$outdata .= "<tr><td>再生数:".$x[$i]->view."</td></tr><br>";
$outdata .= "<tr><td>コメント数:".$x[$i]->coment."</td></tr>";
$outdata .= "<tr><td>マイリスト数:".$x[$i]->mylist."</td></tr><br>";
$outdata .= "<tr><td>URL:".$x[$i]->URL."</td></tr><br>";
$outdata .= "</table>";
}
echo $outdata;
}
//usort($x, "cmp");で構造体xを昇順にソートするためだけの関数。詳しくはusortで検索
//$aは構造体xの要素 $bはその次の要素
function cmp($a, $b)
{
if ($a->mylist == $b->mylist) {
return 0;
}
return ($a->mylist > $b->mylist) ? -1 : 1;//構造体のマイリスト数が多い順。昇順にソートするなら不等号逆にする。文字を扱うのはstrcmp使う
}
function cmp1($a, $b)
{
if ($a->coment == $b->coment) {
return 0;
}
return ($a->coment > $b->coment) ? -1 : 1;//構造体のコメント数が多い順。昇順にソートするなら不等号逆にする。文字を扱うのはstrcmp使う
}
function cmp2($a, $b)
{
if ($a->view == $b->view) {
return 0;
}
return ($a->view > $b->view) ? -1 : 1;//構造体のコメント数が多い順。昇順にソートするなら不等号逆にする。文字を扱うのはstrcmp使う
}
function cmp3($a, $b)
{
if ($a->mylist/$a->view == $b->mylist/$b->view) {
return 0;
}
return ($a->mylist/$a->view > $b->mylist/$b->view) ? -1 : 1;//構造体のコメント数が多い順。昇順にソートするなら不等号逆にする。文字を扱うのはstrcmp使う
}
function cmp4($a, $b)
{
if ($a->coment/$a->view == $b->coment/$b->view) {
return 0;
}
return ($a->coment/$a->view > $b->coment/$b->view) ? -1 : 1;//構造体のコメント数が多い順。昇順にソートするなら不等号逆にする。文字を扱うのはstrcmp使う
}
//新着RSSをRSSlog.txtから開いて構造体に入れる
function add() {
global $size;//要素数はグローバル変数
$filename2 = 'RSSlog.txt';
$URLandle = fopen($filename2, "r");
$contents = fread($URLandle, filesize($filename2));
fclose($URLandle);
$sp = split("\r\n", $contents);//これでtxtの内容一行ごとに配列$sp[0]、$sp[1]、$sp[2]・・・・・に入れた
$size = sizeof($sp);
for($i=0 ; $i<sizeof($sp); $i++) {
$x[$i]->URL=$sp[$i];
}
for($i=0 ; $i<sizeof($sp); $i++) {//正規表現使うの面倒なんでexplode使って区切る。URLを/で区切って配列smに代入
list($user, $pass, $uid, $gid, $sm[$i]) = explode("/", $x[$i]->URL);
}
return $sm;//$smはログファイルにあるURLのケツのsm97899とかが入ってる
}
//クラスで構造体を作る。public変数は個人の名前・年齢・体重みたいな
class A
{
public $num;
public $sm;
public $imgurl;
public $tltle;
public $setsumei;
public $view;
public $mylist;
public $coment;
public $URL;
public $tag;
}
$x[131] = new A;//構造体の宣言。
$sm = add();
lwws($sm);
usort($x, "cmp");//構造体xをマイリスト数が多い順にソートソート。cmpは関数名
write('tmp01.txt');//その順にtmp01に保存
usort($x, "cmp1");//構造体xをコメント数が多い順にソート。ソートするパターンは関数を使って数種類用意しとくと便利
write('tmp02.txt');
usort($x, "cmp2");//構造体xを再生数が多い順にソート
write('tmp03.txt');
usort($x, "cmp3");//構造体xをマイリスト比が多い順
write('tmp04.txt');
usort($x, "cmp4");//構造体xをコメント比が多い順
hyouzi();//ソート後のコンテンツを表示
write('tmp05.txt');
for($i=0 ; $i<30; $i++) {
echo $x[$i]->tltle." 再生数:".$x[$i]->view." マイリスト数:".$x[$i]->mylist." コメント数:".$x[$i]->coment." マイリスト比:".$x[$i]->mylist/$x[$i]->view." コメント比:".$x[$i]->coment/$x[$i]->view."<br>";
}
?>
</body>
</html>