欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

请教各位老师关于PHP数组的问题

程序员文章站 2022-05-04 08:41:16
...
各位老师,初学PHP,有些问题百度找不到,便来这里请教,还望各位老师多多包涵与帮助,感激不尽。

我现在遇到的问题是这样的:
通过一个MYSQL命令,得到一个列表,并将这个列表存到一个数组。
                //定义日期数组                $search_date=array();		//进入FOR循环,从开始时间循环到结束时间                //转化为UNIX时间戳进行操作		for($i=strtotime($start_time);$i

通过上面的代码,得到一个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维数组,而是有两个数组。
如果将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维数组。这样10次循环就有了10个1维数组。
我想要将10次循环的结果存到一个1维数组里面去。
请问有什么方法吗?

那你并没贴全这部分代码呀,我怎么知道你又做了什么?

不好意思,我贴全一点。

//定义日期数组$search_date=array();//进入FOR循环,从开始时间循环到结束时间 //转化为UNIX时间戳进行操作for($i = strtotime($start_time); $i  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 是不可能为二维数组的

array_merge???

不是二维数组喔,是多个1维数组,每次循环都产生了一个1维数组~~

array_merge???

不是array_merge,array_merge() 函数把两个或多个数组合并为一个数组,你的不是这个效果。

谢谢net8386308,我要的是每次循环产生的数组都按序存入到一个数组,在某一个循环里面是只有一个1维数组的,所以这个循环里面不可能合并。也许可以传值到一个函数里面去合并?但循环的天数不固定,那个函数也不知道该如何写。


已解决,感谢各位老师的指教。

就你贴出的这些代码,$log_id 是不可能为二维数组的


LZ再仔细分析一下你的代码吧,数组操作没那么复杂,学会调试,用最蠢的"echo"方法去调试,看下你的数据在每一次循环中都发生了什么变化。 从我这里看,你的$log_id不会是一个二维数组的。除非你的$arr['log_id ']本身就是一个一维数组,你自己echo看看吧!