サンプルでphp7動かない - PHPプロ!Q&A掲示板

4907

  • 0P

サンプルでphp7動かない

質問日時 / 2017年12月15日 18:54    回答数 / 2件

Questioner:  108_php  このエントリーをはてなブックマークに追加 

キーワード / CSV    id    url   

以下からサンプル取得したのですが、php7では動きませんでした。
http://www.yuta-system.com/2011/01/phpcsv.html

動くようにするにはどうしたらいいですか?
5.6.3では動きました。

■CSVファイル
100,店舗名,店舗名ひらがな,ローマ字
101,新宿店,しんじゅくてん,SHINJUKU
102,代々木店,よよぎてん,YOYOGI
103,原宿店,はらじゅくてん,HARAJUKU
104,渋谷店,しぶやてん,SHIBUYA

■PHPファイル
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>ユタデザインのCSV個別表示テスト</title>
</head>

<body>

<?
//URLはファイル名.php?shop_id=shop_id
//といった形になる
//こんな感じ
//shop.php?shop_id=101

$shop_id=$_GET[shop_id];
//↑URL引数からshop_idを変数に渡す。

$fileName = "data.csv";
//↑店舗情報の読み込むCSVを決める

$file = fopen($fileName,"r"); 
//↑そのファイルを開く

$cnt=0;
//↑カウンターを設置、初期化

while(!feof($file)){
//↑ファイルが終わるまで回せ
$csv = fgets($file);
//↑一行づつ配列に入れる
$str[$cnt] = explode(",", $csv);
//$str[]の配列にはもちろん0から入る。
//しかし下のIF文に必要なので
//明示的に$cntというカウンターを設置次第。

if($str[$cnt][0]==$shop_id){
//↑もし$shop_idと1列目が
//ビンゴしたら正解変数へ
$kanji=$str[$cnt][1];
$hiragana=$str[$cnt][2];
$romaji=$str[$cnt][3];
}
//↑もし文の終了
$cnt++;
//↑回す度にカウントアップ
}
//↑回せ文の終了
fclose($file);
//↑ファイルクローズ
?>
念のため配列に入れて見る<br />
<?
print_r($str);

?>
<br/><br/>
なん行カウントした?=<? echo $cnt; ?><br/>
店舗番号=<? echo $shop_id; ?><br/>
漢字=<? echo $kanji; ?><br/>
ひらがな=<? echo $hiragana; ?><br/>
ローマ字=<? echo $romaji; ?><br/>
</body>
</html>

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimixphp7云々以前にshort_open_tagが無効なのでは? ht
 ┗A01-1108_php素晴らしい!ありがとうございます。 試してみて、か

回答一覧

並び替え:

A01
answerershimix [12月18日 14:47]

php7云々以前にshort_open_tagが無効なのでは?

http://php.net/manual/ja/ini.core.php#ini.short-open-tag

<? ではなく、<?php で書いてください(<? echo は <?= でも可)。


(蛇足)
CSVデータの読込みは行読込みしたものをexplodeするのではなくfgetcsvを使うべきです。もし行データを対象にするならばstr_getcsvを使います。explodeでは「正しいCSVの扱い方」が出来ません。

この意見に回答する

ツリーへ TOPへ

A01-1
replyer108_php [12月21日 10:27]

素晴らしい!ありがとうございます。
試してみて、かなり前進できました!
熟読の上、理解進められるよう、引き続き、試してみます。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)