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. [技术博客]采用Qthread实现多线程连接等待

    采用Qthread实现多线程连接等待 ​ 本组的安卓自动化测试软件中,在测试开始前需要进行连接设备的操作,如下图左侧的按钮 ​ ​ 后端MonkeyRunner相关操作的程序中提供了connect() ...

  2. SQL回顾

    数据库的本质是一种特殊的文件 数据库是由数据表组成的,数据表是真正存储数据的 数据库客户端-->SQL语句-->数据库服务器-->数据库文件 表与表之间存在关联的数据库称为关系型数据 ...

  3. js获取数组中的最大值/最小值

    目录 前言 1. 使用Math的静态方法max/min 1.1 结合ES6的扩展运算符...使用 1.2 结合apply/call方法来使用 1.3 结合reduce来使用 2. 排序获取 2.1 只 ...

  4. docker run 中的privileged参数

    docker 应用容器 获取宿主机root权限(特殊权限-) docker run -d --name="centos7" --privileged=true centos:7 / ...

  5. java实现的一个【快速排序 】算法【原创】

    import java.util.Arrays; import org.apache.commons.lang.ArrayUtils; public class Test { public stati ...

  6. linux下如何使用adb连接在qemu中运行的安卓系统?

    1. 运行安卓系统, 如下: $sudo qemu-system-x86_64 -m 4096 -boot d -enable-kvm -smp 3 -net nic -net user,hostfw ...

  7. fiddler抓包详解

    image.png 前言 fiddler是一个很好的抓包工具,默认是抓http请求的,对于pc上的https请求,会提示网页不安全,这时候需要在浏览器上安装证书. 一.网页不安全 1.用fiddler ...

  8. Go 切片:用法和本质

    2011/01/05 引言 Go的切片类型为处理同类型数据序列提供一个方便而高效的方式. 切片有些类似于其他语言中的数组,但是有一些不同寻常的特性. 本文将深入切片的本质,并讲解它的用法. 数组 Go ...

  9. 设置驱动的方法(Chrome 亲测ok)

    驱动下载地址 http://selenium-release.storage.googleapis.com/index.html package com.selenium.java.webdriver ...

  10. 【翻译】Flink Table Api & SQL — SQL客户端Beta 版

    本文翻译自官网:SQL Client Beta  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/sqlCl ...