ここから本文です

前に似た質問をしたのですが、 if ((isset($txt))&&(trim($txt) !== '') これの...

php********さん

2019/3/1718:54:28

前に似た質問をしたのですが、
if ((isset($txt))&&(trim($txt) !== '')
これの意味って、
$txtに何かしら入っていて、かつ、

$txtの先頭及び末尾のスペースを抜いた値が、無しではない、
という意味ですよね?
まずこれは''でなくnullでも良いんでしょうか?
また、issetで確認をしているのにtrimで確認をする意味があまり分からないというか、
そもそもisset自体も必要がよく分からない、
何もないなら、何もないものを追加すればいいかと、
が、これはエラーが出るんでしたっけ?
理由も添えて具体的にお願いします。

閲覧数:
38
回答数:
3
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shi********さん

2019/3/1808:28:47

trimして空白かどうか・・・と調べなくていい条件で「変数が存在すること+中身が空白でないこと」をチェックするならemptyという手もあります。

http://php.net/manual/ja/function.empty.php

#こっちを使う方が多いかもしれません


今回は「入力された文字列を保存して番号指定で表示」という仕様だったので「空白だけの入力」はダメだろうと思ってisset+trim結果の組み合わせにしました。

#このあたりはagunuzさんが書かれているとおりです(汗

本当は文字列の端のマルチバイト文字(いわゆる全角)の空白も除去したいって書いたとおりです。




>が、これはエラーが出るんでしたっけ?

issetで真にならない変数を使うと、undefined variable の Warning(警告)になります(画面表示されるかどうかは設定次第)。警告は無視するというつもりならそれでもいいですが、普通のプログラマは嫌います。

  • 質問者

    php********さん

    2019/3/1823:37:17

    ちょっと日本語がおかしかったのですが、
    「入力された文字列を改行しながら保存」
    「行番号を指定するとその行の文字列を変数に入力」
    てことです。

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

agu********さん

2019/3/1808:13:04

>「スペース」を許容するなら、trimとかはいりませんかね?

いらないよ

>「スペース」だとエラーが出るわけでもないんですよね?

出ないよ


でも入力したものを保存してそれを表示するのに空白だけの入力を許可したら訳が分からないことにならないの?一覧表示でもあるならいいけど行番号を入力して表示っ(質問者自身が)書いてたよね?

プロフィール画像

カテゴリマスター

tez********さん

2019/3/1719:20:42

> まずこれは''でなくnullでも良いんでしょうか?
どちらも isset() が何をやっているかの理解不足からくる疑問だと思います。
先ずは公式マニュアルで確認しましょう。
https://secure.php.net/manual/ja/function.isset.php
https://secure.php.net/manual/ja/types.comparisons.php

そうすれば、isset() で「nullでは無い事」が確認済みなのが理解できると思います。


> issetで確認をしているのにtrimで確認をする意味
例えば、$txt の内容が「空白文字」だけだったら、isset($txt) の結果は true ですよね?
その際、($txt !== '') の結果はどうですか?

この事から、件の if は、何かしら意味のある文字列が入っている事を期待しているのだろうと考える事が出来ます。
__「空白文字等は未入力に等しい」と捉えているとも言えます


> isset自体も必要がよく分からない
未定義の変数(であるのか不明な時を含む)をいきなり使うというのはしないのが原則なので、それを確認するためにも用いられます。

> これはエラーが出るんでしたっけ?
未定義であってもエラーにはなりません。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる