php数组中有一些函数与数学相关的函数,大多都是以array开头然后下划线接一个数学上的英文单词,如下:

 array_diff()
array_diff_assoc()
array_intersect()
array_intersect_assoc()
array_sum()
array_product()
array_count_values()

首先是数组集合函数,差集array_diff,用于得到目标数组和其他数组的都不同的那些元素

 $arr = [1, 2, 3, 4, 5, 6, 7, 8];
$arr1 = [1, 2, 3, 4, 6];
$arr2 = [1, 2, 3, 4, 7];
print_r( array_diff( $arr, $arr1, $arr2 ) );
// Array
// (
// [4] => 5
// [7] => 8
// )

对于关联数组,和上面的结果一致,因为array_diff函数只比教值是否相同

 $arr = [
'A' => 1, 'B' => 2,
'c1' => 3, 'd1' => 4, 'e1' => 5,
'f' => 6, 'g' => 7, 'h' => 8
];
$arr1 = [
'a' => 1, 'b' => 2,
'c' => 3, 'd' => 4, 'e' => 6
];
$arr2 = [
'a' => 1, 'b' => 2,
'c' => 3, 'd' => 4, 'e' => 7
];
print_r( array_diff( $arr, $arr1, $arr2 ) );
// Array
// (
// [e1] => 5
// [h] => 8
// )

array_diff_assoc函数从名字上来看,就知道需要比较每个元素的键,区分大小写,

 $arr = [
'A' => 1, 'B' => 2,
'c1' => 3, 'd1' => 4, 'e1' => 5,
'f' => 6, 'g' => 7, 'h' => 8
];
$arr1 = [
'a' => 1, 'b' => 2,
'c' => 3, 'd' => 4, 'e' => 6
];
$arr2 = [
'a' => 1, 'b' => 2,
'c' => 3, 'd' => 4, 'e' => 7
];
print_r( array_diff_assoc( $arr, $arr1, $arr2 ) );
// Array
// (
// [A] => 1
// [B] => 2
// [c1] => 3
// [d1] => 4
// [e1] => 5
// [f] => 6
// [g] => 7
// [h] => 8
// )

array_intersect()函数,获得目标函数与其他函数都相同的函数,只比教值

 $arr = [
'A' => 1, 'B' => 2,
'c1' => 3, 'd1' => 4, 'e1' => 5,
'f' => 6, 'g' => 7, 'h' => 8
];
$arr1 = [
'a' => 1, 'b' => 2,
'c' => 3, 'd' => 4, 'e' => 6
];
$arr2 = [
'a' => 1, 'b' => 2,
'c' => 3, 'd' => 4, 'e' => 7
];
print_r( array_intersect( $arr, $arr1, $arr2 ) );
// Array
// (
// [A] => 1
// [B] => 2
// [c1] => 3
// [d1] => 4
// )

array_intersect_assoc()只有键和值都一样才行。

 $arr = [
'a' => 1, 'b' => 2,
'c1' => 3, 'd1' => 4, 'e1' => 5,
'f' => 6, 'e' => 7, 'h' => 8
];
$arr1 = [
'a' => 1, 'b' => 2,
'c' => 3, 'd' => 4, 'e' => 6
];
$arr2 = [
'a' => 1, 'b' => 2,
'c' => 3, 'd' => 4, 'e' => 7
];
print_r( array_intersect_assoc( $arr, $arr1, $arr2 ) );
// Array
// (
// [a] => 1
// [b] => 2
// )

array_sum()函数计算数组中所有元素值的和,array_product()函数计算数组中所有元素的积,

对于元素值为数字,很符合数学,但如果是字符和数字混杂。

 $arr = [1, 2, 3, 4, 5, 'a', 'asss'];
$arr1 = [ '1', '2', '2as', '2a2' ];
echo array_sum($arr), PHP_EOL, array_sum($arr1);
 15
7

这就采用了自动类型转换(字符串转数字)的规则了。对于array_product()这个函数,数学规则的不同,导致结果也是不同。

 $arr = [1, 2, 3, 4, 5, 'a', 'asss'];
$arr1 = [ '1', '2', '2as', '2a2' ];
echo array_product($arr), PHP_EOL, array_product($arr1);
// 0
// 8

array_count_values()函数,统计每一个值的个数

 $arr = [1, 2, 3, '1', '2', 1, 2];
print_r( array_count_values($arr) );
// Array
// (
// [1] => 3
// [2] => 3
// [3] => 1
// )

从结果来看似乎也涉及到了自动类型转换规则。注意:向这个函数中传入二维以上数组,会有warning提示,也不会统计二维数组中一维数组的值。

php数组的数学功能相关常用函数的更多相关文章

  1. php数学和时间常用函数有哪些(总结表)(看学习视频效率挺高的)(复习)

    php数学和时间常用函数有哪些(总结表)(看学习视频效率挺高的)(复习) 一.总结 一句话总结: 1.数学函数常用的6个:max().min().cell().floor().round().mt_r ...

  2. js进阶 13-6 jquery动画效果相关常用函数有哪些

    js进阶 13-6 jquery动画效果相关常用函数有哪些 一.总结 一句话总结:animate(),stop(),finish(),delat()四个. 1.stop()方法的基本用法是什么(sto ...

  3. salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用

    上一篇介绍VF中常用的变量,此篇主要内容为VF页面可以直接使用的函数,主要包括Date相关函数,Text相关函数,Information相关函数以及logic相关函数,其他相关函数,比如math相关函 ...

  4. PHP常用的数组相关处理函数

    [数组中常用的多种遍历方式] [for 和 foreach 略] [while() . list() .each() 组合循环遍历数组] each()函数 a. 需要一个数组作为参数 b. 返回来的也 ...

  5. PHP基础-常用的数组相关处理函数

    一 数组键/值操作有关的函数 1. array_values()//获取数组中所有的值 $lamp=array("os"=>"linux", " ...

  6. 【PHP】最详细PHP从入门到精通(三)——PHP中的数组常用函数汇总

     PHP从入门到精通 之PHP中的数组常用函数详解 数组作为PHP中最常用的结构之一,PHP强大的数组函数功能,给数组的相关操作带来了极大的便利.今天给大家介绍的PHP中数组函数,是PHP数组中重要的 ...

  7. numpy学习笔记 - numpy常用函数、向量化操作及基本数学统计方法

    # -*- coding: utf-8 -*-"""主要记录代码,相关说明采用注释形势,供日常总结.查阅使用,不定时更新.Created on Fri Aug 24 19 ...

  8. PHP基础语法: echo,var_dump, 常用函数:随机数:拆分字符串:explode()、rand()、日期时间:time()、字符串转化为时间戳:strtotime()可变参数的函数:PHP里数组长度表示方法:count($attr[指数组]);字符串长度:strlen($a)

    PHP语言原理:先把代码显示在源代码中,再通过浏览器解析在网页上 a. 1.substr;  //用于输出字符串中,需要的某一部分 <?PHP $a="learn php"; ...

  9. Delphi 常用函数(数学函数)round、trunc、ceil和floor

    源:Delphi 常用函数(数学函数)round.trunc.ceil和floor Delphi 常用函数(数学) Delphi中怎么将实数取整? floor 和 ceil 是 math unit 里 ...

随机推荐

  1. 对回溯算法的理解(以数独游戏为例,使用c++实现)

    算法思想: 数独游戏的规则: 每一行都用到1.2.3.4.5.6.7.8.9位置不限: 每一列都用到1.2.3.4.5.6.7.8.9位置不限: 每3×3的格子(共九个这样的格子)都用到1.2.3.4 ...

  2. web3 编译部署调用合约

    //导入solc 编译器 let solc = require('solc') let fs = require('fs') //读取合约 let sourceCode = fs.readFileSy ...

  3. sql为什么要用where 1=1?

    这个1=1常用于应用程序根据用户选择项的不同拼凑where条件时用的.例如:查询用户的信息,where默认为1=1,这样用户即使不选择任何条件,sql查询也不会出错.如果用户选择了姓名,那么where ...

  4. lamda表达式求最小值

    //取最小设置金额的列 var minList = LsList.OrderBy(n=>n.Price).First(); //取最小设置金额的值 var minValue = LsList.S ...

  5. docker入门-基本概念(一)

    Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker的应用场景 Web 应用的自动化打包和发布. 自动化测试和持续集成.发 ...

  6. 转 Oracle 同一个字段的两值进行加减计算

    https://www.cnblogs.com/hjianguo/p/6041617.html 如 病人ID      入院日期                出院日期 00001      2016 ...

  7. PageRank算法原理与Python实现

    一.什么是pagerank PageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google 产品经理),因为他是这个算法的发明者之一,还是google CEO( ...

  8. haproxy转发真实IP给web

    1.在haproxy.cfg中加入下面参数. option forwardfor               #如果后端服务器需要获得客户端真实ip需要配置的参数,必须要放在listen模块下 2.如 ...

  9. Windows Server 2008 R2怎样设置自动登陆(登录)

    方法一: 打开电脑“菜单”,右键点击“运行”,在对话框输入“control userpasswords2”,点击“确定”. 弹出的窗口取消勾选“要使用本机用户必须输入用户名和密码”,取消后点击“确定” ...

  10. excel 去掉 空单元格

    Excel 2003 选中这一列,定位(CTRL+G)--定位条件--空值--确定--右键--删除. 1. 然后进行全选已输入的内容,可以使用鼠标拖动已输入的内容,也可以使用快捷键全选内容,按住ctr ...