0
0

More than 3 years have passed since last update.

PHP初心者の小さな気付き2019

Last updated at Posted at 2019-12-29

はじめに

慣れている人にとっては、「別に」だけど、初心者や業務で全く使わない人が
チャレンジした時に「ゴリゴリに書いているあの処理」の場所にどうやっても行きつかない。
というかH1タグに書いた「hello world」だけしか表示されない。
そんな経験はないだろうか?

そんな間違いやすかった点を幾つかまとめてみた。
さほど年齢も重ねていないのに「仕事に関係ないし、やったことのない事は若いもんに任せて(丸投げして)」という人をチラホラ見かける。
(というか私より年下だよね?みたいな人達もいる)

そんなことを言っていいのは[人生50年...]という名台詞を残した織田信長だけだ
と密かにおもっている。
初心者中の初心者の小さな気づきを残そうと思う。

1.開始タグ<?php

どうしても、実行したい処理があったのだけど、実行しない。
確か
if($i==0){
//なんかの長い表示
//セレクトボックスやテキストボックスなどいろいろ配置
}else{
//重要な処理
}

みたいな雰囲気だったと思う。
どうやってもelseの処理にたどり着けない。
elseの処理だけ切り出してみても通らない。

悪さをしていたのはelseの前に、鎮座していた存在でした。
↓これです。
<php?
「?とphpの位置が逆だったのです!!」

2.文字列置換関数str_replace

誰もが遭遇する全角スペース。
入力欄にこいつが出てくるとウザイ。
空白なんだから、はじいて登録できないようにしたい。
便利なtrimで一発削除できないニクイ奴。
丁度下記のような状況だ。

\$tmpstr="  ";(全角スペース2個)

これは、全角スペースを半角スペースに変換して、trimした後に、空文字判定
すればいいんじゃね?
空文字ならはじくと。。。

\$tmpstr2=trim(str_replace($tmpstr," "," "));ーー(1)

その結果、なんと$tmpstrに全角スペースや連続した半角スペースが入ってきても、
ちゃんとはじいてくれるようになったんです!!!

ところが、\$tmpstr="abc"でもはじく。

使用例を詳しく見ると。。。

「str_replace("置換前文字列","置換後文字列","検索対象文字列")」

という衝撃的なことがわかった。

つまりあれです。
(1)は半角スペースの中に$tmpstrが含まれていれば、全角スペースに変換する
という呪文だったのです。

3.$_POST["名前"]が未定義!?

正確には、
\$val0=\$_POST["名前"];
と書いた$val0がUndefined variableと表示されたのですが。

時間ができたので、久しぶりにプログラムを書いていた。
幾つかしょぼい画面遷移をして、終盤に差し掛かったころだ。

$_POST["btn1"]が未定義ですみたいなことが表示される。
その変数を別変数に置き換えて加工した場所もエラーが出ている。
嘘だろー、前画面から引っ張ってきてるし。

遷移元のプログラムを見る。

<form action="xxxx1111.php" method="post">
<input type="hidden" name="btn11" value="<?=$ret0?>"><---あっ!!!
<input type="submit" value="確定">

そうです。
ボタン名の打ち間違いです。。。

【皆さんは、ボタン名にhidden属性使って、取得しようとしていたりしていませんか?そんな時に使う
前画面のボタン名の確認はしていますか?】

以上3つの気付きでした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0