dポイントを20倍にするたった2つの方法

任意の期間(自~至)を指定して、
その間の日付を1日単位で取得したいのですが
うまい方法が思いつきません。
こうすれば簡単だというアルゴリズムがあれば
教えてください。

例)
開始日 $start '2005/06/29'
終了日 $end '2005/07/02'
というデータがあれば
2005/06/29
2005/06/30
2005/07/01
2005/07/02
を取得したいのです。

A 回答 (2件)

#1の方のアルゴリズムで全く問題ないのですが、


strtotimeは日本人の私には扱いづらいので、
mktimeを良く使っています。

<?php
// 入力データ
$start = "2005/06/29";
$end = "2005/07/02";
// UNIXタイムスタンプ取得
list($sy,$sm,$sd) = explode("/",$start);
list($ey,$em,$ed) = explode("/",$end);
$su = mktime(0,0,0,$sm,$sd,$sy);
$eu = mktime(0,0,0,$em,$ed,$ey);
// 1日の秒数
$sec = 60 * 60 * 24;// 60秒 × 60分 × 24時間
// 日付取得
$key = 0;
for ( $i = $su;$i <= $eu;$i += $sec ) {
$dates[$key] = date("Y/m/d",$i);
$key ++;
}
// 表示
print_r($dates);
?>

以上、ご参考までに。
    • good
    • 0
この回答へのお礼

サンプルまで作成していただきありがとうございます。

こちらでは
mkdateを使用して通算秒数に変換しているという事
ですね。

ループが簡潔にできていてこんな事が出来るのかと
驚いています。

予想以上に簡単に出来ました。ありがとうございます。

お礼日時:2005/06/21 14:49

時間が無いので、方法論だけ書きます。



1)strtotime関数を使って、開始日の通算秒を取得します。

2)1日は86400秒ですから、取得した通算秒に86400を足していくと、1日ずつ日付がずれていきます。

3)86400足すたびに、date関数を使って、日付文字列を取得します。

4)通算秒が、終了日の数値に追いつくまで、この処理を繰り返します。

と、こんな感じではないでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。

通算の秒数はdate関数で元の日付形式に
戻せるのですね。

簡単なロジックで実現できそうです。

お礼日時:2005/06/21 14:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q日付をもとにランダム表示したい

任意の数字を入れると、入力した日付をキーとして、12通りのメッセージを表示させたいのですが、うまい方法が思いつきません。
・同じ日に、同じ数字を入力した場合、同じメッセージが出る
・ほぼ均等に12分の1にしたい
どうしたら手軽に実現できるでしょうか?

Aベストアンサー

<?
$mes = array();//12通り

srand($date+$suuji);
$key = rand(0,11);
print $mes[$key];
?>

乱数生成器のシードとして、日付と数字の演算式をキーとして与える方法はどうでしょうか。

Qテーブルの最後(最新)のレコードを抽出したい

宜しくお願いします。
PHP MYSQL の組み合わせで使っています

以下のようにして、最後のレコードを取り出したいのですが
まったく違う事をしているのかもしれません。

$sql =" select * from テーブル where フィールド='max' " ;

フィールドはauto_incrementで番号を振っています。
これで最大のつもりなのですが・・・。

他にも、レコードを入れた時間も記録したフィールドがあるのですが
どうしてよいか?判りません。

テーブルの最新のレコードを出したいのです。
**その中の一つのフィールドを取り出すのですが、
  それはうまくいっているみたいです 
  (max の所に数字を入れると表示します)

お手数かけますが、どなたかご教授お願いいたします。

Aベストアンサー

#2回答者です。

MySQL 4.1以前(サブクエリを使えない)なら、以下のような方法が考えられます。

select * from 表名
order by 列名 desc limit 1

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

Q日付を基にした乱数生成

ある3つの数字(例:2,3、4)をランダムに選びたいと思います。

1回の抽選で選ばれたランダムの数字が3だと仮定します。

出た数字(3)はその日に何回抽選しても3が出るものとします。

次の日にまた3つの数字からランダムに1つの数字を抽選します。

今度は4が出たとします。この4もこの日に何回抽選しても4が出るものとします。

上記のようなプログラムはどのようなものになりますでしょうか。

解ける方、アドバイスをお願いします。

Aベストアンサー

あらかじめ本日限定ランダム値をたとえば30日分ファイルに用意しておいて、その読み込んだ本日分の値と、その場でランダムに出した2個の値を合わせて表示するという流れではどうでしょう?

Q連想配列からの値の取り出し

お世話様です。

タイトルにもありますが連想配列を作成した後(以下に記述例)に
その配列からキーを指定して値を取得したいと思っております。
array_keys関数だと値を指定してキーを取得するみたいで
うまくいきませんでした。
何かよい方法ありませんでしょうか?

//配列に格納
while (条件) {
  $aParaOra += array((キー) => (値));
}

Aベストアンサー

解答番号No.1の者です。

ちなみに、キーの指定なしで全部取得するのであれば、
array_values($aParaOra)
で、配列化されたものが返ってきます。

もしくは、以下のようにforeachでループすれば、
キーと値を分離して取得できます。
foreach ($aParaOra as $key => $value) {
# $aParaOra[$key]の値が、$value
}

質問者さんが何をしたいのかがいまいちピンときません。

QMySQLで改行を含む文の登録のしかた(改行コード

MySQLで改行を含む文を登録したいんですが、改行を改行コードに書き換えて登録したいです。
改行コードはどのように書けばいいですか?

登録したい文:
あいうえお
かきくけこ
さしすせそ

Aベストアンサー

改行コードは¥nで登録すれば良いです。

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

Qで配列(複数の要素)を渡したいとき?

こんにちわ,

今HTML+PHPで
$hoge[]にいくつかの要素が入っているとき,
それをあるfoo.phpというページに渡したいとき,
echo '<form action="foo.php" method="POST">';
echo '<input type="hidden" name="$hoge[]" >';
echo '</form>';
としたのですが,うまくいきません。

どうしたらよろしいでしょうか。

Aベストアンサー

nameじゃなく、valueでは?
あとやるなら、
for($i=0;$i<count($hoge);$i++){
print "<input type=\"hidden\" name=\"$hoge[$i][0]\" value=\"$hoge[$i][1]\">";
}
とか?

Q配列をPOSTで受けとる

タイトルのまんまですが
配列をformで送って
それをPOSTで受け取りたいのですが
うまくいきません

具体的に言うと
<?php
print"<form method=POST action=action.php>";

for($i=0; $i<$n; $i++){
   print"<input type=text name=foo[$i]>";
}
print"<input type=hidden name=n value=$n>";
print"<input type=submit value=go>";
print"<form>";
?>


///////////以下action.php//////////////////
<?php
$n = $_POST["n"];
for($j=0; $j<$n; $j++){
   $foo[$j] = $_POST["foo[$j]"];
   print"$foo[$j]";
}
?>


こんな感じのことがしたいのですが
うまくいきません
どうもPOSTされてないみたいでfoo[$j]はnullです
凡ミスな気がしなくもないんですが...プログラム初心者なんで↓↓
教えてください
よろしくお願いします

タイトルのまんまですが
配列をformで送って
それをPOSTで受け取りたいのですが
うまくいきません

具体的に言うと
<?php
print"<form method=POST action=action.php>";

for($i=0; $i<$n; $i++){
   print"<input type=text name=foo[$i]>";
}
print"<input type=hidden name=n value=$n>";
print"<input type=submit value=go>";
print"<form>";
?>


///////////以下action.php//////////////////
<?php
$n = $_POST["n"];
for($j=0; $j<$n; $j++){
   $foo[$j] = $_POST["foo[$j...続きを読む

Aベストアンサー

atsuGTさんこんにちは。


受け取り側は

$foo = $_POST["foo"];

とするだけで$fooに送信された配列が格納されます。


$_POST["foo[添え字]"] ではなく、
$_POST["foo"][添え字] となります。

Q文字列から、特定の文字を削除したい

アンケートで入力された値を受け取り、メールで送信しているのですが、受け取った値から、特定の文字列を削除することは可能でしょうか?

例えば電話番号の入力の場合、
03-xxxx-xxxx →03xxxxxxxx
077-xxx-xxxx →077xxxxxxx
のように、-(ハイフン)が入力されていたら、-を削除した文字列に置換してメール送信したいのです。
入力する時に、3つのテキストエリアに分けるのは諸事情でできないので、特定の文字を削除する関数か処理方法がありましたら、教えていただきたいです。
よろしくお願いします。

Aベストアンサー

str_replace
http://itbtech.itboost.co.jp/man/php_man/function.str-replace.html

<?php
$orig_telno = "03-xxxx-xxxx";

$telno = str_replace("-", "", $orig_telno);
echo $telno;

03xxxxxxxx

“PHP 文字列” あたりをキーワードに検索すれば
そんなに難しいものでもないような。


人気Q&Aランキング

おすすめ情報