围观者 发表于 2019-3-26 02:57:01

问个大神php问题

用foreach取出的数据库结果被复盖了怎么办,只有最后一次的结果

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

围观者 发表于 2019-3-26 09:05:19

啊,解决了
依然循环取出就行了
不知道还有什么好办法没

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

感谢大神回复

yemingtu 发表于 2019-3-26 13:49:08

本帖最后由 yemingtu 于 2019-3-26 13:50 编辑

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

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

源是这样的

那就这样,想去几层就加几层foreach循环,如果写成递归也行,有可能你的值是数组,要额外处理。
[*]$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);复制代码

结果:
[*]Array
[*](
[*]    => Array
[*]      (
[*]             => 1
[*]             => 2
[*]      )
[*]
[*]    => Array
[*]      (
[*]             => 1
[*]             => 2
[*]      )
[*]
[*]    => Array
[*]      (
[*]             => 1
[*]             => 2
[*]      )
[*]
[*]    => Array
[*]      (
[*]             => 1
[*]             => 2
[*]      )
[*]
[*])复制代码

yemingtu 发表于 2019-3-26 10:38:00


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

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

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

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

结果:
[*]array(2) {
[*]=>
[*]array(2) {
[*]    ["a"]=>
[*]    int(1)
[*]    ["b"]=>
[*]    int(2)
[*]}
[*]=>
[*]array(2) {
[*]    ["a"]=>
[*]    int(1)
[*]    ["b"]=>
[*]    int(2)
[*]}
[*]}复制代码

tj646 发表于 2019-3-26 16:37:00

肯定是你数据查询方式不对。一般数据库查询出来都是二维的。

orz2 发表于 2019-3-26 10:07:46

说需求

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


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

说需求

Array
(
    => Array
      (
             => Array
                (
                   => 1
      )

    => Array
      (
             => Array
                (
                   => 2
      )

)


变成


Array
(
             => Array
                (
                   => 1

             => Array
                (
                   => 2
)


怎么变

orz2 发表于 2019-3-26 10:11:00


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

Array
(
    => Array[*]$aaa = [];
[*]foreach($mysql_return_data as $v){
[*]$aaa[$v['fid']] = $v;
[*]}复制代码

titanic 发表于 2019-3-26 08:53:58

好问帮顶。。。。。

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


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

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

其实简单理解来说,就是多维数组变成 二维
如一个数组是这样的   $aaa[][]
新数组去掉中间的那个[]
变成   $aaa[]
页: [1] 2
查看完整版本: 问个大神php问题