当前位置:首页 > 包含标签 PHP 的所有文章

1个PHP项目中,需要在一个大数组中遍历查询是否存在该元素,使用了in_array()导致运行程序时快时慢。通过测试得知in_array()和array_search()在大数组查询越靠后的元素时速度越慢。而使用array_key_exists()或者isset()则会很快。因为这个函数需要用到key,所以使用array_flip()反转/交换数组中所有的键名以及它们关联的键值。


1、测试环境

PHP 8.3.7和阿里云99元云主机。

解决PHP使用post数据超限丢弃问题

问题描述

PHP8.1使用POST提交了1600个参数,最终$_POST只能获取到1000个参数,其他的参数会丢弃。


问题分析

PHP有2个参数会导致这个问题:post_max_size和max_input_vars。本案例是因为max_input_vars默认1000导致的。


解决方法

将PHP配置文件中的max_input_var调大,该值默认为1000(分号注释掉了),去除分号注释,并把该值改为5000并重启PHP即可。

PHP从二维数组中根据权重随机取出一个元素,权重越高取出的概率越高,抽奖的简单算法。


二维数组数据如下,weight代表权重大小

$data = [ ['id'=>1,'name'=>'特等奖','weight'=>1], ['id'=>2,'name'=>'一等奖','weight'=>3], ['id'=>3,'name'=>'二等奖','weight'=>5], ['id'=>4,'name'=>'三等奖','weight'=>10], ['id'=>5,'name'=>'四等奖','weight'=>20], ['id'=>6,'name'=>'五等奖','weight'=>30], ['id'=>7,'name'=>'谢谢抽奖','weight'=>100] ];


方法一:按照权重生成一个数组,数组随机取值即可。

QQ空间token参数加密计算g_tk、bkn

QQ空间很多地方需要使用token作为url参数才能成功获取数据,那么如何计算token(g_tk、bkn)就成了必须要解决的问题。


1、查找token加密文件

浏览器访问QQ空间,并用开发者工具抓包数据,先通过token字符串全局搜索token可能出现在的文件或者js,然后通过详细查看获知getACSFToken函数是生成token的关键,并打开具体的js文件,interface_mini.js和qzfl_v8_2.1.65.js都有该加密算法。

宝塔BT安装PHP 8.2扩展插件

问题描述

宝塔BT(版本7.9.9)安装了PHP 8.2.4后,发现只有有限的几个扩展插件(目前为止6个),但是我这边需要imagick、imagemagick和swoole扩展


解决方法1:手动安装

1、进入到目录 /www/server/panel/install ,找到exif.sh、imagemagick.sh和swoole4.sh (如果找不到,在低版本PHP81安装下该扩展即可),并增加以下代码。

假如PHP要计算一个3x3矩阵对角线元素之和,你首先需要定义这个矩阵,然后分别访问并加起对角线上的元素。


1、主对角线元素之和

$matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; $sum = 0; for ($i = 0; $i < count($matrix); $i++) { $sum += $matrix[$i][$i]; // 只加对角线上的元素 } echo "对角线元素之和是: " . $sum; //对角线元素之和是: 15 (1+5+9=15)


2、次对角线元素之和

回文数是指正读与反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如"我为人人,人人为我"等。

在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。设n是一任意自然数,若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数1。


PHP判断是否回文数代码:

对于刚学PHP的新手来讲,用php求多个数的最大公约数和最小公倍数无疑是非常经典的一道练习题,对于逻辑和递归的考验还是相当到位的。


1、最大公约数

最大公约数指某几个整数共有因子中最大的一个。

如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。比如,12和15的公约数有1,3,所以12和15的最大公约数是31。