(例:5月6日なら、「6」を抽出」
http://q.hatena.ne.jp/1177317240 以前の日付に関する質問で Mook さんに教えていただいた方法を参考にして、自分なりに考えてみました。
// hizuke より日付一桁を抽出するための関数
function getHizukedate( $dd ) {
// - で日付を分割
$dArray = explode( "-" , $dd );
$stamp = mktime( 0, 0, 0, $dArray[1], $dArray[2], $dArray[0] );
// printf で整形して表示
printf("%d", date( "j", $stamp ));
}
$hizuke_date = getHizukedate($row["hizuke"]);
$hizuke_date_int = intval($hizuke_date);
(↑$hizuke_date = getHizukedate($row["hizuke"]);だけではうまくいかなかったので、文字列を数値に変換しなければならないのかなあと思って、intvalをやってみました)
これで、例えば、
$kakezan = 30 * $hizuke_date_int;
print $kakezan;
とやってみても、うまくできません。(0が表示された)
しかも、printfを使っているからか、「$hizuke_date = getHizukedate($row["hizuke"]);」のところで、一度数字が表示されちゃうし、それならsprintfかな、と変えてみると、今度は全く動きませんでした。
アドバイスをいただけると助かります。
関数を使って値を取得したい場合は、関数側で return を使用します。
PHP 基礎編4 - 基本事項、ユーザ関数、function、return、global、static
トライされた例をそのまま使用すると、
<?
// hizuke より日付一桁(?)を抽出するための関数
function getHizukedate( $dd ) {
// - で日付を分割
$dArray = explode( "-" , $dd );
$stamp = mktime( 0, 0, 0, $dArray[1], $dArray[2], $dArray[0] );
// printf で整形して表示
return date( "j", $stamp ); // 関数の値として日付を返す
}
$hizuke_date = getHizukedate('2007-05-06');
$kakezan = 30 * $hizuke_date; // この例では $hizuke_date は 6
print $kakezan;
?>
といった感じでしょうか。
日付の部分を取得する関数として実装しましたが、日の内一桁目(1の位)を取り出したい場合は
return date( "j", $stamp ) % 10;
のようにします。
ただ、前回の例は曜日を出すために日付の計算をしましたが、日の部分だけを取り出すなら、
<? // hizuke より日付一桁(?)を抽出するための関数 function getHizukedate( $dd ) { // - で日付を分割 $dArray = explode( "-" , $dd ); return $dArray [2]; } ?>
でもできます。
day関数で、date型の値から日付部分のみ抽出できます。
select day(日付の列名) as hizuke from 表名 where 検索条件
今回は直前の select 文から hizuke 以外の要素も一緒に取り出しているので、php内でなんとかならないのかなーと思っていたんですが、そうじゃなかったら、MySQLから直接取り出すというのも良さそうですね。
ありがとうございます。
関数を使って値を取得したい場合は、関数側で return を使用します。
PHP 基礎編4 - 基本事項、ユーザ関数、function、return、global、static
トライされた例をそのまま使用すると、
<?
// hizuke より日付一桁(?)を抽出するための関数
function getHizukedate( $dd ) {
// - で日付を分割
$dArray = explode( "-" , $dd );
$stamp = mktime( 0, 0, 0, $dArray[1], $dArray[2], $dArray[0] );
// printf で整形して表示
return date( "j", $stamp ); // 関数の値として日付を返す
}
$hizuke_date = getHizukedate('2007-05-06');
$kakezan = 30 * $hizuke_date; // この例では $hizuke_date は 6
print $kakezan;
?>
といった感じでしょうか。
日付の部分を取得する関数として実装しましたが、日の内一桁目(1の位)を取り出したい場合は
return date( "j", $stamp ) % 10;
のようにします。
ただ、前回の例は曜日を出すために日付の計算をしましたが、日の部分だけを取り出すなら、
<? // hizuke より日付一桁(?)を抽出するための関数 function getHizukedate( $dd ) { // - で日付を分割 $dArray = explode( "-" , $dd ); return $dArray [2]; } ?>
でもできます。
ありがとうございます。
日の内一桁目(1の位)を取り出す、となると、たとえば25日だったら「5」のみになるんですよね?
日付書式の文字列をタイムスタンプにする関数が用意されているので使ってみてはどうですか?
http://www.php.net/manual/ja/function.strtotime.php
これを使えば、わざわざ自作するまでもないでしょう。
$row["hizuke"] = '2007-05-06'; // 実際はこの行は不要ですね $hizuke_date = date('j',strtotime($row["hizuke"])); $kakezan = 30 * $hizuke_date; print $kakezan;
の結果は、180 となると思います。
はー、いろいろあるんですね…
ありがとうございます!
ありがとうございます。
日の内一桁目(1の位)を取り出す、となると、たとえば25日だったら「5」のみになるんですよね?