0

PHPに次のステートメントのショートカットがあるかどうか誰かが知っていますか?

$output = isset($some_value) ? $some_value : "Some Value Not Set";
echo $output;

これは私がよく遭遇するもので、$ some_valueは実際には非常に長く、次のような関数が関係している可能性があります。

$output = $this->db->get_where('my_db',array('id'=>$id))->row()->some_value) ? $this->db->get_where('my_db',array('id'=>$id))->row()->some_value) : "Some Value Not Set";
echo $output;

これを行う演算子または関数が必要なようです。私は簡単にそれを書くことができました、そして私はその答えを探していません、むしろ誰かが組み込みのショートカットを知っているなら。

4

6 に答える 6

9

PHP 5.3以降、三項演算子の中央部分を省略できます。式expr1?:expr3は、expr1がTRUEと評価された場合はexpr1を返し、それ以外の場合はexpr3を返します。

http://php.net/manual/en/language.operators.comparison.php

于 2009-10-15T18:46:35.477 に答える
4

あなたは空白を恐れているようです。これを使って!自由に!疑問符とコロンの前後にそれぞれスペースを追加すると、コードが読みやすくなります。ステートメントが長くなりすぎる場合は、改行を追加してください。それを試してみてください、それはあなたを傷つけることはありません。

于 2009-10-15T19:28:21.007 に答える
4

この目的で条件演算子を使用する前に、データベース呼び出しの結果を使用して変数を設定する必要があります。あなたの例では、データベースを2回呼び出します。

例えば:

$output = $this->db->get_where('my_db',array('id'=>$id))->row()->some_value);
$output = $output ? $output : "Some Value Not Set";
echo $output;

そしてそれが確立されたので、これは条件演算子を使用しない方が本当に賢明な良いケースです。条件演算子は、実際には汎用のif-thenショートカットとして使用することを意図したものではありません。

于 2009-10-15T18:43:40.193 に答える
4

の後にテストからの長い式を再利用する必要がある場合は、?テスト内の変数に割り当てて(割り当ては割り当てられた値を返す式であるため)、:の後にこの変数を使用できます?

$output = ($some_value = $this->db->get_where('my_db', array('id' => $id))->row()->some_value))
  ? $some_value 
  : "Some Value Not Set";
echo $output;
于 2009-10-15T18:46:58.063 に答える
3

条件演算子がショートカットだと思います:)関数呼び出しと読みやすさを保存するために、最初に値を変数に保存することをお勧めします。

$some_value = $this->db->get_where('my_db',array('id'=>$id))->row()->some_value);
$output = $some_value ? $some_value : "Some Value Not Set";
echo $output;
于 2009-10-15T18:44:20.740 に答える
1

最善の方法は次のとおりです。

$output = $this->db->get_where('my_db',array('id'=>$id))->row()->some_value)
echo $output =($output)?$output:"Some Value Not Set";

その後は一度だけ実行します!

于 2009-10-15T18:46:47.897 に答える