今回はカートシステムがあるサイトでカートにいれた最大価格の商品を出す方法がわからず勉強したのでメモしておきます。
PHPを使って選んだ商品の中から最大価格と最小価格を表示する方法です。
min()
とmax()
を使って表示していきます。
結構難易度が高くバグがでるPHPなのでテストなのでチェックしながら実装してください。
目次
max関数で最大値を取得する方法
まずは簡単に取得する方法を紹介します。
最大値を取得
// max関数のリストの中から最大値を出力する方法(echoで出力します) echo max(-1, 10, 300);
出力結果
300
max()のかっこ内の一番大きい数字を出力します。
配列(ループ)でだした数字でmax関数で最大値を取得する方法
// 配列の中からmax関数のリストの中から最大値を出力する方法 $test = array(-1, 1, 300); // 配列($test)の中にある数値から最大値を出力(echoで出力します) echo max($test);
出力結果
300
配列のmax()のかっこ内の一番大きい数字を出力します。
日付をmax関数で最大値取得する方法
日付の最大値を取得することもできます。
// 日付の最大値を出力する方法 echo max('2015-12-15', '2013-10-1', '1999-1-1');
出力結果
2015-12-15
日付の数字が大きいものが出力されます。
アルファベットをmax関数で最大値取得する方法
アルファベットの最大値を取得することもできます。
// 日付の最大値を出力する方法 $test = array('saitama', 'aomori', 'toyama'); // アルファベットの最大値を出力する方法 echo max($test );
出力結果
toyama
アルファベットがあとのものが出力されます。
AからZの順で大きいと判断されます。
min関数で最小値を取得する方法
まずは簡単に取得する方法を紹介します。
最小値を取得
// min関数のリストの中から最小値を出力する方法(echoで出力します) echo min(1, 10, 300);
出力結果
1
min()のかっこ内の一番大きい数字を出力します。
配列(ループ)でだした数字でmin関数で最小値を取得する方法
// 配列の中からmin関数のリストの中から最小値を出力する方法 $test = array(1, 10, 300); // 配列($test)の中にある数値から最大値を出力(echoで出力します) echo min($test);
出力結果
1
配列のmin()のかっこ内の一番小さい数字を出力します。
日付をmin関数で最小値取得する方法
日付の最大値を取得することもできます。
// 日付の最小値を出力する方法 echo min('2015-12-15', '2013-10-1', '1999-1-1');
出力結果
1999-1-1
日付の数字が小さいものが出力されます。
アルファベットをmin関数で最小値取得する方法
アルファベットの最小値を取得することもできます。
// 日付の最大値を出力する方法 $test = array('saitama', 'aomori', 'toyama'); // アルファベットの最大値を出力する方法 echo min($test );
出力結果
aomori
アルファベットがあとのものが出力されます。
AからZの順で小さいと判断されます。
Smartyを使用した場合の使用方法(応用編)
ここからは実際に使用した方法のメモになります。
smartyで出力させているのでもしsmartyを使用している方は参考にしてください。
PHP
// カートの中身を表示 $product = $カート->getAll(); $smarty->assign( 'product', $product ); //1商品の合計価格 $price_product= 0; //1商品の合計台数 $order_product= 0; //ループ記述 foreach ($product as $key => $value){ //1商品の価格 $price_product_arr[$key] = $value["台数変数"] * $value['商品価格変数']; //1商品の台数 $order_product_arr[$key] = $value["台数変数"]; //カートに入れた全商品の価格 $price_all += $value["台数変数""] * $value["商品価格変数"]; } $price_product = max($price_product_arr); $order_product= max($order_product_arr); $price_all ; $smarty->assign('price_product' ,$price_product); $smarty->assign('order_product' , $order_product); $smarty->assign('price_all ' , $price_all );
テンプレート
//全商品の中から最大価格の商品 {{$price_product|escape|number_format}} //全商品の中から最大個数の商品 {{$order_product|escape|number_format}} //全商品の価格 {{$price_all|escape|number_format}}