先生方、私は PHP を初めて使用するので、Baidu で見つけられない質問があるので、ここに来てアドバイスをお願いします。よろしくお願いします。
私が現在直面している問題は次のとおりです:
MYSQL コマンドを通じてリストを取得し、そのリストを配列に保存します。
//定义日期数组 $search_date=array(); //进入FOR循环,从开始时间循环到结束时间 //转化为UNIX时间戳进行操作 for($i=strtotime($start_time);$i<strtotime($stop_time)+86400;$i+=86400) { $search_date_num = date('Y-m-d', $i); $search_date[]= $search_date_num; }
Array ( [0] => 16777221 [1] => 16777222 ) Array ( [0] => 16777221 [1] => 16777222 )
$newArr= array();$search_date = array(0=>'2014-08-10' ,1=>'2014-08-11');$num = 0;foreach ($search_date as $k => $v){ $newArr[$num][$k] = $v; $num++;}var_dump($newArr);
何を言っているのかよくわかりません
もっとわかりやすく説明してください
先生、xuzuning。
1 次元配列 A があり、値は日付です。
次に、この配列を foreach A に渡します。
A の値を条件として使用して、データベースから他の値を取得します。これらの値はリストであり、数十、場合によっては数万ある場合もあります。
取得した値を1次元配列として順番に保存する必要があります。
現在直面している問題は次のとおりです。
日付が 1 の場合、値のリストを取得して配列 C に格納します。
日付が 2 の場合、C の別のコピーを取得します。
この時、配列Cを出力すると、配列は非1次元配列になりますが、配列が2つあります。
C が 1 次元配列に変換され、複数のループの結果がこの配列に格納されたらどうなるでしょうか?
結果を配列にどのように保存しましたか?
$log_id = array(); foreach ($search_date as $v) { //查询当日所有符合条件的id $sql = "Select distinct log_id from $s where DATE(log_time)='".$v."'"; $result=mysql_query($sql,$link); //通过一个循环将值存入 while($arr = mysql_fetch_assoc($result)) { $log_id [] = $arr['log_id ']; }
では、foreach が終了すると、$log_id は単なる 1 次元配列ではないでしょうか?
はい。ただし、各ループは 1 次元配列を生成します。このように、10 回のループ後には 10 個の 1 次元配列が作成されます。
10 回のループの結果を 1 次元配列に保存したいと考えています。
何か方法はありますか?
では、コードのこの部分をすべて投稿しませんでした。何をしたのかをどうやって知ることができますか?
ごめんなさい、全部載せます。
//定义日期数组$search_date=array();//进入FOR循环,从开始时间循环到结束时间 //转化为UNIX时间戳进行操作for($i = strtotime($start_time); $i < strtotime($stop_time)+86400;$i+= 86400){ $search_date_num = date('Y-m-d', $i); $search_date[]= $search_date_num;}//以上,会得到数组$search_date//格式为:Array ( [0] => 2014-07-21 [1] => 2014-07-22 )//然后:$log_id = array();$s =' s11';foreach ($search_date as $v) { //查询当日所有符合条件的id $sql = "Select distinct log_id from $s where DATE(log_time)='".$v."'"; $result=mysql_query($sql,$link); //通过一个循环将值存入 while($arr = mysql_fetch_assoc($result)) { $log_id [] = $arr['log_id ']; }
Array ( [0] => 16777221 [1] => 16777222 [2] => 16777223) Array ( [0] => 26777221 [1] => 26777222 [2] => 26777223)
Array ( [0] => 16777221 [1] => 16777222 [2] => 16777223 [3] => 26777221 [4] => 26777222 [5] => 26777223)
配列の array_merge ですか? ? ?
これは 2 次元配列ではなく、複数の 1 次元配列です。各ループは 1 次元配列を生成します~~
array_merge? ? ?
array_merge ではありません。array_merge() 関数は 2 つ以上の配列を 1 つの配列にマージします。
net8386308 さん、ありがとうございます。私が望むのは、各ループで生成された配列が順番に配列に格納されることです。あるループでは 1 次元配列が 1 つしかないため、このループ内でマージすることはできません。おそらく値を関数に渡してマージしますか?しかしサイクルの日数が決まっておらず関数の書き方が分かりません。
解決しました。先生方、アドバイスありがとうございました。
投稿したコードに基づいて、$log_id は 2 次元配列にすることはできません
配列の操作はそれほど複雑ではないので、デバッグ方法を学び、デバッグして確認してください。ループを通過するたびにデータに何が起こるか。私が見たところ、$log_id は 2 次元配列ではありません。 $arr['log_id '] 自体が 1 次元配列でない限り、自分でエコーして確認してください。