- ベストアンサー
PHPのmin関数、「1」以上の数値を取得
- PHPのmin関数を使用する際に、「1」以上の数値を取得する方法を知りたい。
- 最小値を求めるmin関数を使用しているが、0が表示されるため、1以上の数値に限定する方法が知りたい。
- 子ども服の料金の最安値を求める際に、min関数を使用しようとしているが、0が表示されるため、1以上の数値に限定する方法を教えてほしい。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
$price = array_filter($price);
その他の回答 (4)
SQL文修正 $stmt = $pdo->query('SELECT `size`, `price` FROM `info` WHERE `price` > 0');
お礼
ありがとうございます。 こういうやり方もあるのですね、非常に参考になりました。
yambejpさんの方法をSQL実行と共に1発で実現するならこんなふうに書きます。 clothesデータベースのinfoテーブルが id| size | price 0 |60 | 0 1 |70 | 0 2 |80 | 0 3 |90 | 2000 4 |100 | 2000 … のような構造であると仮定します。(size, price以外のカラムはあっても無くてもいい) try { $pdo = new PDO('mysql:dbname=clothes;host=127.0.0.1;charset=utf8'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $pdo->query('SELECT `size`, `price` FROM `info`'); $results = $stmt->fetchAll(PDO::FETCH_KEY_PAIR); var_dump($results); } catch (Exception $e) { echo 'エラー: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'); } PDOの使い方をご存じなければ調べてみてください。 どの API を使うか http://www.php.net/manual/ja/mysqlinfo.api.choosing.php この中ではPDOが最もオススメできます。 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); としてSQLエラー時にも例外をスローさせることが出来るのはPDOだけの強みです。
お礼
ありがとうございます。 PDOは便利ですね。こういうやり方もあるのですね、非常に参考になりました。
- yambejp
- ベストアンサー率51% (3827/7415)
サイズのあるものだけ配列に収納しておけばよいでしょう <?PHP $price = array(90=>2000,100=>2000,110=>2500,120=>3000); print "MIN:".min($price)."<br>"; print "MAX:".max($price)."<br>"; ?>
お礼
ありがとうございます。 参考にして解決できました、こういうやり方もあるのですね、非常に参考になりました。
- notnot
- ベストアンサー率47% (4900/10358)
$price = array_diff(array(0,0,0,2000,2000,2500,3000,0,),array(0)); で、0 が削除できます。
お礼
ありがとうございます。 非常に参考になりました。こんなに短い文で解決するとは!驚きです
お礼
ありがとうございます。 ズバリこれで解決しました、非常に参考になりました。