ホームページ  >  記事  >  バックエンド開発  >  PHPの配列について先生方にお聞きしたいです。

PHPの配列について先生方にお聞きしたいです。

WBOY
WBOYオリジナル
2016-06-23 13:51:471000ブラウズ

先生方、私は 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;		}


上記のコードを通じて、search_date の配列を取得します。 2 つ以上のデータが含まれる場合があります。それらはすべて、
array ([0]>='2014-08-10' [1]>='2014-08-11') のような世界です

ここでの質問は、 foreach ($ を渡すかどうか) です。 search_date as $v){
}
この種のロジックは、データを取得するためにデータに移動します。


Array ( [0] => 16777221 [1] => 16777222  ) Array ( [0] => 16777221 [1] => 16777222  ) 


のようなデータを取得しますが、これは完全な配列ではありません。
各ループは新しい配列を形成します。
ループするたびに配列を取得するのではなく、ループによって取得されたすべてのデータを大きな 1 次元または 2 次元の配列に保存する方法はありますか?


ディスカッションへの返信(解決策)

$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 '];        }


次に、
print_r($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) 

あなたが投稿したこれらのコードでは、$log_id は不可能です2D

配列の 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 次元配列でない限り、自分でエコーして確認してください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。