LoginSignup
0
0

More than 1 year has passed since last update.

結構使うけどすぐ忘れる関数の使い方

Posted at

結構使うけどすぐ忘れる関数の使い方

phpの関数で使用頻度高いけど毎回ググってる関数の使い方を記憶に定着させるためにメモ。

str_replace

特定の文字列を置換。

$zip = "123-4567";
$zip = str_replace("-", "", $zip);
echo $zip;

//123456

郵便番号や電話番号などをDBに保存する際に”-”を除いた文字列で保存したい場合など。

私は悪い使い方として
古いプログラムを改修する際に誰が作ったか知らない俺俺関数で吐き出されたhtmlの一部だけ変更したい場合使ったりする。

function OreOreFunction(){
    return "<p>俺俺俺俺だよ!</p>";
}

$text = OreOreFunction();//俺俺関数
$change_text = str_replace("だよ!", "ですよ!", $text);
echo $change_text;

//<p>俺俺俺俺ですよ!</p>

idをつけたい時などは

function OreOreFunction(){
    return "<p>俺俺俺俺だよ!</p>";
}

$text = OreOreFunction();//俺俺関数
$change_text = str_replace("<p>", "<p id='oreore'>", $text);
echo $change_text;

//<p id='oreore'>俺俺俺俺だよ!</p>

本当はコードを読んでしっかり理解して関数の中身を理解した方がいいのだろうけど、そんな時間もないし古いコードの癖が強い関数のソースなんて興味が湧かない・・・

explode,implode

特定の文字で文字列を切り分けて配列にしてくれる関数

$ids = array();
$ids[] = 123;
$ids[] = 456;
$ids[] = 789;

$id_text = implode(",", $ids);

//どこかに渡す
//ゴニョゴニョされる
//返ってきた時

$id_array = explode(",", $id_text);
var_dump($id_array);
//array(3) { [0]=> string(3) "123" [1]=> string(3) "456" [2]=> string(3) "789" }

$id_text = implode(",", $id_array);
$SQL = "UPDATE SET ********* WHERE id IN({$id_text})";
var_dump($SQL);
//string(45) "UPDATE SET ********* WHERE id IN(123,456,789)"

データベースから抜き取ったレコードをどっかに渡してゴニョゴニョして返してもらう時、どのidのレコードを編集したか覚えておきたい時に使ったりした。

strpos

文字列の中に特定の文字列が含まれるかどうか
こちらも初心者の頃にはどう役に立つかいまいち分からなかったな

注文番号やお問合せ番号などの業務的に使用する番号の頭にアルファベットなどをくっ付けて意味を持たすことはよくある話。
注文番号の一例
T00001 /電話注文
F00001 /FAX注文
W00001 /WEB注文....

$number = "F1234-001";

if(strpos($number, 'F') !== false){
    echo "FAX注文です!";
}elseif(strpos($number, 'T') !== false){
    echo "電話注文です!";
}elseif(strpos($number, 'W') !== false){
    echo "WEB注文です!";
}else{
    echo "???";
}

//FAX注文です!

なぜ条件式が !==false なのかというと、先頭の文字列でマッチしてしまうと0を返してしまうから

$number = "F1234-001";

if(strpos($number, 'F')){
    echo "FAX注文です!";
}elseif(strpos($number, 'T')){
    echo "電話注文です!";
}elseif(strpos($number, 'W')){
    echo "WEB注文です!";
}else{
    echo "???";
}

//???

Fが先頭にあるにも関わらず条件式の最後まで流れていってしまった
0文字目で見つかったから0を返したんですが
0はfalseと見なされてしまうので厳密チェックでしっかり判別しないといけないですね。

strposよく使うのですが、忘れがちなのが引数にどちらを入れていいか分からなくなることがよくある。
逆に入れてしまうともちろん上手く検索されませんので何か良い覚え方は無いものか・・・・・

疲れたので今回は以上です。
よく忘れる関数はまだまだあると思うのでちょくちょく追加していきます。

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