吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1376|回复: 10
收起左侧

[已解决] PHP二维数组合并问题咨询

[复制链接]
fenga6 发表于 2022-2-8 12:21
本帖最后由 fenga6 于 2022-2-9 00:43 编辑

[PHP] 纯文本查看 复制代码
$arr = array(
                array(
                    'user_id' => 100,
                    'goods_id' => 10,
                    'number' => 5,
                ),
                array(
                    'user_id' => 100,
                    'goods_id' => 11,
                    'number' => 1,
                ),
                array(
                    'user_id' => 102,
                    'goods_id' => 11,
                    'number' => 1,
                ),
                array(
                    'user_id' => 102,
                    'goods_id' => 12,
                    'number' => 4,
                ),
            );

            $result = array();

            foreach($arr as $val){
                $key = $val['user_id'];
                if(!isset($result[$key])){
                    $result[$key] = $val;
                }else{
                    $result[$key]['number'] += $val['number'];
                }
            }

            echo '<pre>';
            print_r(array_values($result));
            echo '</pre>';

执行结果为:
[PHP] 纯文本查看 复制代码
Array
(
    [0] => Array
        (
            [user_id] => 100
            [goods_id] => 10
            [number] => 6
        )

    [1] => Array
        (
            [user_id] => 102
            [goods_id] => 11
            [number] => 5
        )

)


我期望的结果是 把number合并,不是相加,请问大神怎么改一改呢?
结果如下:
[PHP] 纯文本查看 复制代码
Array
(
    [0] => Array
        (
            [user_id] => 100
            [goods_id] => 10
            [number10] => 5
           [number11] =>1
        )

    [1] => Array
        (
            [user_id] => 102
            [goods_id] => 11
            [number11] => 1
            [number12] => 4
        )

)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| fenga6 发表于 2022-2-8 12:28
本帖最后由 fenga6 于 2022-2-8 13:06 编辑

php转格式.png

或者有没有更好实现的思路?请教各位

二维数组.txt (901 Bytes, 下载次数: 2)
Takitooru 发表于 2022-2-8 12:54
 楼主| fenga6 发表于 2022-2-8 13:05
Takitooru 发表于 2022-2-8 12:54
你是不是想实现查询功能?

就是数据库中是单条数据, 查询时候想把这个人全部成绩查询并展示出来
puz_zle 发表于 2022-2-8 13:33
本帖最后由 puz_zle 于 2022-2-8 13:42 编辑

我来 啊 啊啊啊啊

image.png
这个不会出现这种情况
我们或许可以帮你实现最终的功能
wysheep 发表于 2022-2-8 13:39
本帖最后由 wysheep 于 2022-2-8 13:42 编辑

$arr = array(
                array(
                    'user_id' => 100,
                    'goods_id' => 10,
                    'number' => 5,
                ),
                array(
                    'user_id' => 100,
                    'goods_id' => 11,
                    'number' => 1,
                ),
                array(
                    'user_id' => 102,
                    'goods_id' => 11,
                    'number' => 1,
                ),
                array(
                    'user_id' => 102,
                    'goods_id' => 12,
                    'number' => 4,
                ),
            );

            $result = array();

            foreach($arr as $val){
                $key = $val['user_id'];
                if(!isset($result[$key])){
                    $result[$key] = $val;
                }else{
                    $result[$key]['number'][] = $val['number'];
                }
            }

            echo '<pre>';
            print_r(array_values($result));
            echo '</pre>';
确定过眼神 发表于 2022-2-8 14:08
本帖最后由 确定过眼神 于 2022-2-8 14:12 编辑

[PHP] 纯文本查看 复制代码
<?php

$arr = [
    [
        "id" => 199,
        "name" => "张三",
        "grade" => 1,
        "score" => 77,
    ],
    [
        "id" => 200,
        "name" => "张三",
        "grade" => 2,
        "score" => 87,
    ],
    [
        "id" => 201,
        "name" => "李四",
        "grade" => 1,
        "score" => 78,
    ],
    [
        "id" => 202,
        "name" => "李四",
        "grade" => 2,
        "score" => 98,
    ],
    [
        "id" => 207,
        "name" => "李四",
        "grade" => 3,
        "score" => 67,
    ],
];

// 思路
// 重新拼接数组,将每个级别与分数保存到一个数组里面
// 后续直接遍历这个数组即可
$result = [];
foreach ($arr as $index => $item) {
    if (isset($result[$item["name"]])) {
        // 将级别与分数插入到res数据
        array_push($result[$item["name"]]["res"], ["grade" => $item["grade"], "socre" => $item["score"]]);
    } else {
        // 将姓名也拼接上,方便后续遍历
        $result[$item["name"]]["name"] = $item["name"];
        // 初始化级别与分数
        $result[$item["name"]]["res"][] = ["grade" => $item["grade"], "socre" => $item["score"]];
    }
}

// 得到的结果,直接遍历res即可
echo '<pre>';
print_r($result);
echo '</pre>';

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
fenga6 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| fenga6 发表于 2022-2-8 14:54

我再学习一下,感谢
Takitooru 发表于 2022-2-8 14:58
如果单纯实现查询,就没必要搞拼接数组那么复杂。
帮你做好了

截图

火狐截图_2022-02-08T06-55-30.466Z.png

代码
[PHP] 纯文本查看 复制代码
<?php
//模拟数据库数据
$arr = Array(
Array('id'=>'199','name'=>'张三','grade'=>'1','score'=>'77','creat_time'=>''),
Array('id'=>'200','name'=>'张三','grade'=>'2','score'=>'87','creat_time'=>''),
Array('id'=>'206','name'=>'李四','grade'=>'1','score'=>'78','creat_time'=>''),
Array('id'=>'207','name'=>'李四','grade'=>'2','score'=>'98','creat_time'=>''),
Array('id'=>'208','name'=>'李四','grade'=>'3','score'=>'67','creat_time'=>''),
);
?>
<!DOCTYPE html>
<html>
<head>
<title>吾爱网友求助问题</title>
</head>
<body>
<h3>吾爱网友求助问题:就是数据库中是单条数据, 查询时候想把这个人全部成绩查询并展示出来</h3>
<h3>PHP二维数组合并问题咨询
[url]https://www.52pojie.cn/thread-1584477-1-1.html[/url]
(出处: 吾爱破解论坛)
</h3>
<form action="" method="post">
<div>
姓名:
<input type="text" name="name" value="<?php echo $name ?>"/>
<input type="submit" value="查询" />
</div>
</form>
<br/>
<table width="100%" border="1" cellpadding="0" cellspacing="0" style="text-align: center;">
  <tr style="background-color: #fabf8f;">
    <td>姓名</td>
    <td>级别1</td>
    <td>级别2</td>
    <td>级别3</td>
  </tr>
<?php
if($_POST["name"]) {
	$name = $_POST["name"];
	$ress = array();
	echo"<tr>";
	echo '<td>'.$name.'</td>';
	foreach($arr as $v) {
		$ress[$v['id']] = $v;
		if($ress[$v['id']]['name'] == $name) {
			$pieces = explode(" ", $ress[$v['id']]['score']);
			foreach($pieces as $vk) {
				echo '<td>'.$vk.'</td>';
			}
		}
	}
	echo"</tr>";
}
?>
</table>
</body>
</html>

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
88868 + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!

查看全部评分

phao345 发表于 2022-2-8 16:21
[PHP] 纯文本查看 复制代码
foreach($arr as $val){
            $key = $val['user_id'];
            if(!isset($result[$key])){
                $val['number'.$val['goods_id']] = $val['number'];
                $result[$key] = $val;
                unset($result[$key]['number']);
            }else{
                $result[$key]['number'.$val['goods_id']] = $val['number'];
            }
        }


只能是这样了 ,如你图所示   一个数组下不不能有两个相同的key的(第一个数组里的 number10 )
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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