全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1333|回复: 12

问个大神php问题

[复制链接]
发表于 2019-3-26 02:57:01 | 显示全部楼层 |阅读模式
用foreach取出的数据库结果被复盖了怎么办,只有最后一次的结果

如果不用 $aaa[]  这种形式,还有别的方法吗
 楼主| 发表于 2019-3-26 09:05:19 | 显示全部楼层
啊,解决了
依然循环取出就行了
不知道还有什么好办法没

foreach($mysql_return_data as $value){
   foreach($value as $v=>$k){
      $aa[] = $k;
   }
}

感谢大神回复
发表于 2019-3-26 13:49:08 | 显示全部楼层
本帖最后由 yemingtu 于 2019-3-26 13:50 编辑
围观者 发表于 2019-3-26 10:38
这样子果然可以,但它只能取出前面一条

源是这样的


那就这样,想去几层就加几层foreach循环,如果写成递归也行,有可能你的值是数组,要额外处理。
  1. $array = [[['a' => 1, 'b' => 2],['a' => 1, 'b' => 2]], [['a' => 1, 'b' => 2],['a' => 1, 'b' => 2]]];
  2. $result = [];
  3. foreach ($array as $item){
  4.     foreach ($item as $item2){
  5.         $result[] = $item2;
  6.     }
  7. }
  8. print_r($result);
复制代码


结果:
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [a] => 1
  6.             [b] => 2
  7.         )

  8.     [1] => Array
  9.         (
  10.             [a] => 1
  11.             [b] => 2
  12.         )

  13.     [2] => Array
  14.         (
  15.             [a] => 1
  16.             [b] => 2
  17.         )

  18.     [3] => Array
  19.         (
  20.             [a] => 1
  21.             [b] => 2
  22.         )

  23. )
复制代码

点评

正解  发表于 2019-3-26 16:37
发表于 2019-3-26 10:07:46 | 显示全部楼层
围观者 发表于 2019-3-26 08:50
这个只是举例,实际的结果并不止fid一款,难道要全写进去吗

其实简单理解来说,就是多维数组变成 二维


这个样子??
  1. $array = [[['a' => 1, 'b' => 2]], [['a' => 1, 'b' => 2]]];
  2. $new_array = array_map(function ($item) {
  3.     return $item[0];
  4. }, $array);

  5. var_dump($new_array);
复制代码


结果:
  1. array(2) {
  2.   [0]=>
  3.   array(2) {
  4.     ["a"]=>
  5.     int(1)
  6.     ["b"]=>
  7.     int(2)
  8.   }
  9.   [1]=>
  10.   array(2) {
  11.     ["a"]=>
  12.     int(1)
  13.     ["b"]=>
  14.     int(2)
  15.   }
  16. }
复制代码

点评

正解  发表于 2019-3-26 10:11
发表于 2019-3-26 08:53:58 | 显示全部楼层
肯定是你数据查询方式不对。一般数据库查询出来都是二维的。
 楼主| 发表于 2019-3-26 08:08:55 | 显示全部楼层


Array
(
    [0] => Array
        (
            [1] => Array
                (
                    [fid] => 1
        )

    [1] => Array
        (
            [2] => Array
                (
                    [fid] => 2
        )

)

变成

Array
(
            [1] => Array
                (
                    [fid] => 1

            [2] => Array
                (
                    [fid] => 2
)


怎么变
发表于 2019-3-26 08:31:01 | 显示全部楼层
围观者 发表于 2019-3-26 08:08
Array
(
    [0] => Array
  1. $aaa = [];
  2. foreach($mysql_return_data as $v){
  3. $aaa[$v['fid']] = $v;
  4. }
复制代码
 楼主| 发表于 2019-3-26 08:50:01 | 显示全部楼层

这个只是举例,实际的结果并不止fid一款,难道要全写进去吗

其实简单理解来说,就是多维数组变成 二维
如一个数组是这样的   $aaa[][]
新数组去掉中间的那个[]
变成   $aaa[]
 楼主| 发表于 2019-3-26 10:38:08 | 显示全部楼层


这样子果然可以,但它只能取出前面一条

源是这样的
$array = [[['a' => 1, 'b' => 2],['a' => 1, 'b' => 2]], [['a' => 1, 'b' => 2],['a' => 1, 'b' => 2]]];
想要变成
$array =[['a' => 1, 'b' => 2],['a' => 1, 'b' => 2],['a' => 1, 'b' => 2],['a' => 1, 'b' => 2]];
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-25 05:06 , Processed in 0.068967 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表