找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 75|回复: 10

问个大神php问题

[复制链接]

41

主题

283

回帖

729

积分

高级会员

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

如果不用 $aaa[]  这种形式,还有别的方法吗
回复

使用道具 举报

41

主题

283

回帖

729

积分

高级会员

积分
729
 楼主| 发表于 2019-3-26 09:05:19 | 显示全部楼层
啊,解决了
依然循环取出就行了
不知道还有什么好办法没

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

感谢大神回复
回复

使用道具 举报

25

主题

706

回帖

1579

积分

金牌会员

积分
1579
发表于 2019-3-26 13:49:08 | 显示全部楼层
本帖最后由 yemingtu 于 2019-3-26 13:50 编辑

围观者 发表于 2019-3-26 10:38

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

源是这样的


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

    结果:
    [ol]
  • Array
  • (
  •     [0] => Array
  •         (
  •             [a] => 1
  •              => 2
  •         )
  •     [1] => Array
  •         (
  •             [a] => 1
  •              => 2
  •         )
  •     [2] => Array
  •         (
  •             [a] => 1
  •              => 2
  •         )
  •     [3] => Array
  •         (
  •             [a] => 1
  •              => 2
  •         )
  • )[/ol]复制代码
  • 回复

    使用道具 举报

    25

    主题

    706

    回帖

    1579

    积分

    金牌会员

    积分
    1579
    发表于 2019-3-26 10:38:00 | 显示全部楼层

    围观者 发表于 2019-3-26 08:50

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

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


    这个样子??
    [ol]
  • $array = [[['a' => 1, 'b' => 2]], [['a' => 1, 'b' => 2]]];
  • $new_array = array_map(function ($item) {
  •     return $item[0];
  • }, $array);
  • var_dump($new_array);[/ol]复制代码

    结果:
    [ol]
  • array(2) {
  •   [0]=>
  •   array(2) {
  •     ["a"]=>
  •     int(1)
  •     ["b"]=>
  •     int(2)
  •   }
  •   [1]=>
  •   array(2) {
  •     ["a"]=>
  •     int(1)
  •     ["b"]=>
  •     int(2)
  •   }
  • }[/ol]复制代码
  • 回复

    使用道具 举报

    0

    主题

    17

    回帖

    42

    积分

    新手上路

    积分
    42
    发表于 2019-3-26 16:37:00 | 显示全部楼层
    肯定是你数据查询方式不对。一般数据库查询出来都是二维的。
    回复

    使用道具 举报

    8

    主题

    110

    回帖

    262

    积分

    中级会员

    积分
    262
    发表于 2019-3-26 10:07:46 | 显示全部楼层
    说需求
    回复

    使用道具 举报

    41

    主题

    283

    回帖

    729

    积分

    高级会员

    积分
    729
     楼主| 发表于 2019-3-26 08:50:00 | 显示全部楼层

    orz2 发表于 2019-3-26 06:38

    说需求


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

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

    )


    变成


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

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


    怎么变
    回复

    使用道具 举报

    8

    主题

    110

    回帖

    262

    积分

    中级会员

    积分
    262
    发表于 2019-3-26 10:11:00 | 显示全部楼层

    围观者 发表于 2019-3-26 08:08

    Array
    (
        [0] => Array
    [ol]
  • $aaa = [];
  • foreach($mysql_return_data as $v){
  • $aaa[$v['fid']] = $v;
  • }[/ol]复制代码
  • 回复

    使用道具 举报

    12

    主题

    729

    回帖

    1510

    积分

    金牌会员

    积分
    1510
    发表于 2019-3-26 08:53:58 | 显示全部楼层
    好问帮顶。。。。。
    回复

    使用道具 举报

    41

    主题

    283

    回帖

    729

    积分

    高级会员

    积分
    729
     楼主| 发表于 2019-3-26 06:38:29 | 显示全部楼层

    orz2 发表于 2019-3-26 08:31

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

    其实简单理解来说,就是多维数组变成 二维
    如一个数组是这样的   $aaa[][]
    新数组去掉中间的那个[]
    变成   $aaa[]
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-4-21 15:56 , Processed in 0.019818 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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