*【封装php函数】--处理数组

本文介绍PHP中处理二维及三维数组的实用函数,包括去重、排序、查找和分组等操作,帮助开发者提高代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    /**
     * 合并时用的,二维数组,根据某个Key进行去重
     * @param $arr 要去重的二维数组
     * @param $key 根据哪个key去重
     * @author yzm
     */
    function assoc_unique(&$arr, $key){
        $rAr=array();
        for($i=0;$i<count($arr);$i++){
            if(!isset($rAr[$arr[$i][$key]])) {
                $rAr[$arr[$i][$key]]=$arr[$i];
            }
        }
        return $arr=array_values($rAr); //不写return,调的时候 就不要赋给 变量
    }

 

效果截图:

 

 

/*
 * 二维数组按指定键值排须
 */
function arr_sort($array, $key, $order = "asc"){//asc是升序 desc是降序
    $arr_nums = $arr = array();
    foreach ($array as $k => $v) {
        $arr_nums[$k] = $v[$key];
    }

    if ($order == 'asc') {
        asort($arr_nums);
    } else {
        arsort($arr_nums);
    }

    foreach ($arr_nums as $k => $v) {
        $arr[$k] = $array[$k];
    }
    return $arr;
}


效果截图:

 

 

/**
 * 根据第3维数组的key对应的value,找他的上级key(就是第2维的key)
 * @param $datas 三维数组
 * @param $key   要查找的key
 * @param $value 要查找的value
 */
function test($datas,$key,$value){
    foreach ($datas as $k => $v){
        foreach ($v as $kk => $vv){
            if(isset($vv[$key]) == $value){
                return $kk;
            }
//第3维用内置函数不稳,因为如果$vv不是数组的话,会有警告
//            if(array_search('lampol',$vv)){
//                return $kk;
//            }
        }
    }
}

效果图:

 

/**
     * 数据每2条分1个组
     * @param $data  传个二维数组
     * @param $n   以几条记录做区分
     * @param $value   以哪个value(字段名)做区分
     */
    public function arrGrounp($data,$n,$value){
        $grounp = array();
        $total = ceil(count($data)/$n);
        for($k=0;$k<$total;$k++){
            for ($i=0;$i<$total;$i++){
                if (!is_null($data[$i+($k*$n)][$value])) {
                    $grounp[$k][$i] = $data[$i + ($k * $n)][$value];
                }
            }
        }

        return $grounp;
    }

效果图

 

 

 

 

 

 

 

### PHP生成包含标题、按钮、留言列表及XSS防护的管理员后台页面 以下是一个完整的PHP代码示例,它展示了如何创建一个具有标题、按钮、留言列表以及内置XSS防护机制的管理员后台页面。此实现考虑了安全性问题,并采取措施防止可能的跨站脚本攻击(XSS)[^2]。 #### 完整PHP代码示例 ```php <?php // 初始化留言板数组 $messages = [ htmlspecialchars("说书人长得好帅"), // 防止XSS注入[^2] htmlspecialchars("<script>alert('XSS');</script>") // 此消息尝试执行恶意脚本,但会被转义处理 ]; if ($_SERVER["REQUEST_METHOD"] === "POST") { $newMessage = isset($_POST['message']) ? trim($_POST['message']) : ''; if (!empty($newMessage)) { // 使用htmlspecialchars过滤用户输入以防XSS攻击 $safeMessage = htmlspecialchars($newMessage); array_push($messages, $safeMessage); } } ?> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>安全管理员后台</title> </head> <body> <h1>这里是管理员后台,你已成功登录</h1> <!-- 留言提交表单 --> <form method="post" action=""> <label for="message">新增留言:</label><br> <input type="text" name="message" id="message"><br><br> <button type="submit">发布留言</button> </form> <hr> <b>最新留言</b> <ul> <?php foreach ($messages as $msg): ?> <li><?php echo $msg; ?></li> <!-- 输出经过转义的安全内容 --> <?php endforeach; ?> </ul> </body> </html> ``` --- #### 解析与说明 1. **HTML结构** - 页面顶部显示了一个固定的标题 `<h1>`。 - 提供了一个简单的表单用于接收用户的新留言输入,并通过 POST 方法发送至服务器端进行处理- 下方展示的是最新的留言列表,每条留言都封装在 `<li>` 标签中。 2. **PHP逻辑** - `$messages` 数组预先填充了一些测试性的留言数据,其中包括一条试图触发 XSS 攻击的消息。 - 接收来自前端表单的数据时,使用 `trim()` 函数去除多余空白字符后再验证其有效性。 - 用户提交的内容均需经由 `htmlspecialchars()` 处理以确保任何特殊字符都被正确编码,从而避免潜在的 XSS 注入风险。 3. **安全性考量** - 所有动态生成的内容都会先调用 `htmlspecialchars()` 函数来转换成实体形式再输出到浏览器,这样即使有人故意嵌入恶意脚本也不会被执行而是直接作为普通文本呈现给访客阅读[^2]。 4. **用户体验改进** - 表格设计简洁明了,便于管理者快速浏览和理解信息。 - 实现即时反馈功能,在不刷新整个页面的情况下即可完成新评论添加操作(尽管这里未采用AJAX技术)。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值