メシのタネ

Webプログラミング 備忘録

  • DOMをPHPで操作できたらいいよね

    そうだよね。そう思うよね。JavaScriptでやると、画面がガタついたりするもんね。そうならないようにする方法もあるかもしれないけど、僕はできませんので、サーバー側でなんとかできたらええなぁと思って挑戦したけど、できませんでしたよ。PHP標準でHTMLをDOMにできるらしい今、技[...]

    続きを読む
  • 設計書ってなんで書くの?

    設計書をなぜ書くのかから始めてかれこれ3年近くこの禅問答をやっているわけですが、いまだに答えは出ません。ただ、その禅問答をやる中で設計書に対する取り組み方は大きく変わったので、その一部でも書いていきたい。基本設計はとにもかくにも必要だと思う設計書はいらぬ!という話をよく聞くし、自分[...]

    続きを読む
  • 書ききってやる。

    久々に書いてみる。久々に文章を書くということをやってみようと思う。伝える作業を観察したいと思ったからそうしたいと考えた。情緒的な文章は基本的にゴミ箱にぽいしてきましたが、情緒的なのも自分だと思う。「文章をかくという作業は、とりもなおさず自分と自分をとりまく事物との距離を確認すること[...]

    続きを読む
  • 普通の会社で2年普通に働いて思う事

    えらい寒くなりました。文句言いながらも現職を続けて2017年12月1日にめでたく2年がたちました。分かりやすいが乱暴に言えばITドカタと呼ばれる業界に入って案件のヒエラルキーの無慈悲さを痛感しながらも、それでもしょうがないと頑張る人たちに心を打たれながら「じゃあ俺も」と頑張れない自分に挫折して、とあ[...]

    続きを読む
  • jQueryUiのDatepicker利用時にminDate設定するとバグる件

    題名の通りなんですが、DatepickerでminDate使うとバグります。また後でキャプチャ見て貰いますけど、灰色の部分が、minDateで設定した日付が反復して出るようになるんですね。こういうの気が付かない人がいるかも知れませんが、ChoromeでminDate設定してる人は気にしてみてくだ[...]

    続きを読む

php ファイルの読み書きは3行

ファイルの読み書きについて検索してると良く見かけるのが、

ファイルを開いて、行があるだけ読み込んで、閉じてって流れを良く見かけます。
書くときも、ファイルを開いて、ロックして、書き込んで、ファイルを閉じてって流れを見かけます。
今まで僕もそう書いてたんですけど、毎回読み出しがややこしくて調べます。

実は3行で書ける

今日も、あーファイルだーめんどくせーと思って、いつもの流れを調べてたんですけど、
こないだそういや参考書買ったじゃないかと思って、パーフェクトPHPを開いてみると、
えらく簡単にできるじゃないですか。

今までのコード

<br />
$fp = fopen(path,&quot;r&quot;);<br />
$row = 1;<br />
if (($read = $fp) !== FALSE) {<br />
    while (($data = fgetcsv($read, 1000, &quot;,&quot;)) !== FALSE) {<br />
        $row++;<br />
        for ($i=0; $i &lt; count($data); $i++) {<br />
            echo $data[$i];<br />
        }<br />
    }<br />
    fclose($read);<br />
}</p>
<p>$fp = fopen(path,&quot;ab&quot;);<br />
flock($fp,LOCK_EX);<br />
fwrite($fp,&quot;なんか文字&quot;);<br />
flock($fp,LOCK_UN);<br />
fclose($fp);<br />

この非常に面倒くさいコードが

<br />
define(path,&quot;nantyara.csv&quot;);<br />
echo file_get_contents(path);<br />
file_put_contents(path, &quot;おとくな三行&quot;, FILE_APPEND | LOCK_EX);</p>
<p>

こんだけで書けます。

ファイル読み込み時に配列で取得する

このまま取ると、そのままファイルの内容が吐き出されるので、
配列にすると便利です。

<br />
define(path,&quot;nantyara.csv&quot;);<br />
//改行を区切り文字として一行ごとに配列化する<br />
$line = explode(&quot;n&quot;,file_get_contents(path));<br />
//カンマ区切りを配列にする<br />
$line = explode(&quot;,&quot;,file_get_contents(path));<br />

便利だなーって思いました。
でもカンマ区切りの配列だと扱いにくいので1行ごとに連想配列で取得したかったんですけど、
できなかったので、nを区切り文字として、配列に置き換えました。なんか良い方法ないかなー。

</p>
<p>$line = explode(&quot;n&quot;,file_get_contents(path));<br />
foreach($line as $val)<br />
{</p>
<p> explode(&quot;,&quot;,$val)</p>
<p>}</p>
<p>

ってやれば可能だそうですよ!

関連記事

  1. 2015.05.28

    if文を試す
  2. PHPサムネイル
  3. PHPサムネイル

コメントをお待ちしております