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. .htaccess tricks总结

    目录 .htaccess tricks总结 一.什么是.htaccess 二.利用条件 三.利用方式 && tricks 1.将指定后缀名的文件当做php解析 2.php_value利 ...

  2. linux安装yasm报错

    进入yasm-1.2.0, 输入指令 ./configure //编译yasm make && make install //安装yasm,安装完成即可. 报错信息 make[2]: ...

  3. CV基础知识点深入理解

    BN实现: Batch Normalization学习笔记及其实现: BatchNormalization 层的实现 使用Python实现Batch normalization和卷积层 Batch N ...

  4. In Vitro model验证 | Harnessing single-cell genomics to improve the physiological fidelity of organoid-derived cell types

    Transcriptional benchmarking of in vitro cells to in vivo with single-cell rna-seq - 简介 Harnessing s ...

  5. Windows下将网络共享目录挂载到指定文件夹

    简述 因为某些原因,设计好的目录结构是不能动的,因此需要将网络共享目录挂载到指定目录下,以便扩容. 在Linux下这完全没有问题,但是Windows下的操作就稍微复杂一点. 1.直接使用net use ...

  6. NPU TPU

    https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet

  7. UICachedDeviceRGBColor CGImage]: unrecognized selector sent to instance 0xxxxxxxxxxx'

    UICachedDeviceRGBColor CGImage]: unrecognized selector sent to instance 0xxxxxxxxxxx' 报错原因是 本来应该写空间的 ...

  8. zp本地包

    https://pan.baidu.com/s/13670pdPNvG_o1coYFnovXA 密码: 3pk3

  9. 使用VEGAS2(Versatile Gene-based Association Study)进行gene based的关联分析研究

    gene-based关联分析研究是SNP-based关联分析研究的一个补充. 目前有很多工具支持gene-based关联分析研究,比如GCTA,VEGAS2等. 下面主要介绍一下怎么用VEGAS2做g ...

  10. 协程介绍, Greenlet模块,Gevent模块,Genvent之同步与异步

    昨日内容回顾 I/O模型,面试会问到I/O操作,不占用CPU.它内部有一个专门的处理I/O模块.print和写log 属于I/O操作,它不占用CPU 线程GIL保证一个进程中的多个线程在同一时刻只有一 ...