php数组的数学功能相关常用函数
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数组的数学功能相关常用函数的更多相关文章
- php数学和时间常用函数有哪些(总结表)(看学习视频效率挺高的)(复习)
php数学和时间常用函数有哪些(总结表)(看学习视频效率挺高的)(复习) 一.总结 一句话总结: 1.数学函数常用的6个:max().min().cell().floor().round().mt_r ...
- js进阶 13-6 jquery动画效果相关常用函数有哪些
js进阶 13-6 jquery动画效果相关常用函数有哪些 一.总结 一句话总结:animate(),stop(),finish(),delat()四个. 1.stop()方法的基本用法是什么(sto ...
- salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用
上一篇介绍VF中常用的变量,此篇主要内容为VF页面可以直接使用的函数,主要包括Date相关函数,Text相关函数,Information相关函数以及logic相关函数,其他相关函数,比如math相关函 ...
- PHP常用的数组相关处理函数
[数组中常用的多种遍历方式] [for 和 foreach 略] [while() . list() .each() 组合循环遍历数组] each()函数 a. 需要一个数组作为参数 b. 返回来的也 ...
- PHP基础-常用的数组相关处理函数
一 数组键/值操作有关的函数 1. array_values()//获取数组中所有的值 $lamp=array("os"=>"linux", " ...
- 【PHP】最详细PHP从入门到精通(三)——PHP中的数组常用函数汇总
PHP从入门到精通 之PHP中的数组常用函数详解 数组作为PHP中最常用的结构之一,PHP强大的数组函数功能,给数组的相关操作带来了极大的便利.今天给大家介绍的PHP中数组函数,是PHP数组中重要的 ...
- numpy学习笔记 - numpy常用函数、向量化操作及基本数学统计方法
# -*- coding: utf-8 -*-"""主要记录代码,相关说明采用注释形势,供日常总结.查阅使用,不定时更新.Created on Fri Aug 24 19 ...
- PHP基础语法: echo,var_dump, 常用函数:随机数:拆分字符串:explode()、rand()、日期时间:time()、字符串转化为时间戳:strtotime()可变参数的函数:PHP里数组长度表示方法:count($attr[指数组]);字符串长度:strlen($a)
PHP语言原理:先把代码显示在源代码中,再通过浏览器解析在网页上 a. 1.substr; //用于输出字符串中,需要的某一部分 <?PHP $a="learn php"; ...
- Delphi 常用函数(数学函数)round、trunc、ceil和floor
源:Delphi 常用函数(数学函数)round.trunc.ceil和floor Delphi 常用函数(数学) Delphi中怎么将实数取整? floor 和 ceil 是 math unit 里 ...
随机推荐
- 剑指offer:序列化二叉树
题目描述: 请实现两个函数,分别用来序列化和反序列化二叉树 思路分析: 这里一开始有点不明白题目的意思.实际上序列化应该指把二叉树用某种编码方式表示,这里一般是字符串的形式.而反序列就是将之前生成的序 ...
- leetcode: 最长上升子序列
题目描述: 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 ...
- linux 线程查看 和 Jvm栈线程ID对应
一.proc查看进程和线程 该方法是个人最为推荐,也最喜欢的一种方法.进程文件下,有几种方式可以获取目前进程开启的进程数. 查看status文件: # cat /proc//status Name: ...
- android测试和iOS测试的区别
一.常识性区别 二.导航方式 iOS:Tab放在页面底部,不能通过滑动来切换,只能点击.也有放在上面的,也不能滑动,但有些Tab本身可以滑动,比如天猫的.还有新闻类的应用. Android:一般放在页 ...
- js 计算总页数的最高效方式
js 计算总页数的最高效方式 /** * [getTotalPageNum 获取页码总数] * @param {[type]} totalRecord [总记录] * @param {[type]} ...
- Spring boot与Spring cloud之间的关系
Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Boot,看名字就知道是Spring的引导,就是用于启动Spring的 ...
- scrapy入门案例
一. 新建项目(scrapy startproject) 在开始爬取之前,必须创建一个新的Scrapy项目.进入自定义的项目目录中,运行下列命令: scrapy startproject scrapy ...
- ELK 部署相关问题汇总
1.启动es-head问题 因为高版本es-head需要单独启动,所以先要安装npm等工具.安装教程见[1] 启动命令:../elasticsearch-head/node_modules/grunt ...
- Hadoop window win10 基础环境搭建(2.8.1)(转)
下面运行步骤除了配置文件有部分改动,其他都是参照hadoop下载解压的share/doc/index.html. hadoop下载:http://apache.opencas.org/hadoop/c ...
- [bug]—console 在某些机型下的隐藏坑
背景 我们的项目通过重写console对象上的方法实现日志上报的功能,截取代码片段如下: Class Logger() { debug() {}, info() {}, warn() {}, ... ...