我能想到的是:function inject($elem, $array) {

return array_map(function ($n) use ($elem) { return array_merge((array)$elem, (array)$n); }, $array);}function zip($array1, $array2) {

return array_reduce($array1, function ($v, $n) use ($array2) { return array_merge($v, inject($n, $array2));  }, array());}

function cartesian_product($array) {

$keys = array_keys($array);

$prod = array_shift($array);

$prod = array_reduce($array, 'zip', $prod);

return array_map(function ($n) use ($keys) { return array_combine($keys, $n); }, $prod);}

(下面使用伪数组/列表/字典表示法,因为PHP对于这类事情太冗长了。)

这个inject函数变换a, [b]进[(a,b)],即它向数组的每个值注入一个值,返回一个数组。不管是不是a或b已经是一个数组了,它将始终返回一个二维数组。inject('a', ['foo', 'bar'])

=>  [('a', 'foo'), ('b', 'bar')]

这个zip函数应用inject函数到数组中的每个元素。zip(['a', 'b'], ['foo', 'bar'])

=>  [('a', 'foo'), ('a', 'bar'), ('b', 'foo'), ('b', 'bar')]

请注意,这实际上产生了笛卡尔积,因此zip有点用词不当。简单地将此函数应用于数据集中的所有元素,就可以得到任意长度数组的笛卡儿积。zip(zip(['a', 'b'], ['foo', 'bar']), ['42', '76'])

=>  [('a', 'foo', '42'), ('a', 'foo', '76'), ('a', 'bar', '42'), …]

这不包含键,但是由于元素在结果集中都是按顺序排列的,所以您可以简单地将键重新注入结果。array_combine(['key1', 'key2', 'key3'], ['a', 'foo', '42'])

=>  [ key1 : 'a', key2 : 'foo', key3 : '42' ]

将其应用于产品中的所有元素,将得到所需的结果。

如果您愿意,可以将上述三个函数折叠成一个长语句(这也可以清除错误的名称)。

对于PHP<=5.2没有匿名函数的“展开”版本如下所示:function inject($elem, $array) {

$elem = (array)$elem;

foreach ($array as &$a) {

$a = array_merge($elem, (array)$a);

}

return $array;}function zip($array1, $array2) {

$prod = array();

foreach ($array1 as $a) {

$prod = array_merge($prod, inject($a, $array2));

}

return $prod;}function cartesian_product($array) {

$keys = array_keys($array);

$prod = array_shift($array);

$prod = array_reduce($array, 'zip', $prod);

foreach ($prod as &$a) {

$a = array_combine($keys, $a);

}

return $prod;}

php关联数组求平均值,用PHP关联数组求笛卡儿积相关推荐

  1. java利用数组求平均值_Java程序使用数组计算平均值

    Java程序使用数组计算平均值 在此程序中,您将学习计算Java中给定数组的平均值. 示例:使用数组计算平均值的程序 public class Average { public static void ...

  2. python求平均值_如何用python求平均值

    学习了Python相关数据类型,函数的知识后,利用字符串的分割实现了输入任意多个数据,并计算其平均值的小程序.思路是接收输入的字符串,以空格为分隔符,将分割的数据存入列表(lst1)中,将lst1中的 ...

  3. 计算机函数sumif求平均值,用sumif函数如何求平均值

    首先我们使用一个成绩表数据来说明sumif函数在Excel数据统计中的用法.下面给大家介绍具体方法: 根据数据表,我们先平均求得每个学生的分数平均值.这里有个快速的方式.选中单元格,点击[功能菜单]- ...

  4. html自动求平均值,教大家Excel自动求平均值的函数公式教程

    近日有关于Excel自动求平均值的函数公式教程的问题受到了很多网友们的关注,大多数网友都想要知道Excel自动求平均值的函数公式教程的具体情况,那么关于到Excel自动求平均值的函数公式教程的相关信息 ...

  5. 用java获取一维数组的平均值_java中一维数组常见运算

    本教程操作环境:windows7系统.java10版,DELL G3电脑. 1.数组求和public class Main { public static void main(String[] arg ...

  6. 求平均值程序c语言,编写求一组整数的和与平均值的程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ----------------------------------------------------- [习题6-1]编写求一组整数的和与平均值的程序 ...

  7. 计算机函数sumif求平均值,『如何用sumif求平均年龄』excel表中如何算平均数及标准差...

    怎样在Excel中计算所有人的平均年龄??! 在旁边插入一列G,写=DATEDIF(F2,NOW(),"y"),F2是出生年月日.然后下拉. 在旁边的单元格写=average(G: ...

  8. linux中用循环求平均值,怎么用循环句求平均值(在线等)

    以下是引用blueblood在2006-6-21 15:42:25的发言: 楼主是在命令窗口运行SCAN语句吧!interactive mode就是指命令窗口模式! 楼主应该去搞清楚命令文件的建立与运 ...

  9. 编程序创建一个类模板,可以对不同的数据类型的数组分别进行初始化、添加数据、求和、求平均值、显示数组等功能。

    编程序创建一个类模板,可以对不同的数据类型的数组分别进行初始化.添加数据.求和.求平均值.显示数组等功能. #pragma once #include<iostream> using na ...

最新文章

  1. golang mysql demo
  2. [数据库] Navicat for MySQL事件Event实现数据每日定期操作
  3. oracle视图view看不出来主键,oracle - 使用主键创建视图
  4. 从一次换机器的过程谈软硬件的分离
  5. JAVA入门级教学之(Object类中的equals方法)
  6. 238.除自身以外数组的乘积
  7. cdn.cdzk_页面“www.cdzkdc.com”HTTP状态检测结果- 站长工具
  8. cobbler命令_使用Cobbler批量部署Linux和Windows:Windows系统批量安装(三)
  9. “出道” 5 年采用率达 78%,Kubernetes 为何如此成功?
  10. Matlab函数——crandn
  11. js input输入框去空格
  12. 【笔记】人工智能 一种现代方法 人工智能 一种现代方法 第5章 对抗搜索
  13. 备战数学建模7-MATLAB数值微积分与方程求解
  14. ESXI升级或降级HBA驱动
  15. JavaScript 资源大全中文版
  16. 端口汇聚实现多端口带宽叠加
  17. 《好吗好的》--大冰
  18. 烤仔TVのCCW | 交易的生命周期
  19. LINUX IIO子系统分析之七 虚拟iio device驱动实现
  20. HTML+CSS 编辑的(多列布局、相册、百度首页)、盒子模型

热门文章

  1. 【信号处理】心电信号PQRST峰值检测matlab工具箱
  2. jmeter利用察看结果树查看响应调试取样器(Debug Sampler)(3)
  3. 武汉市建筑物矢量数据(Shp格式+带高度)
  4. element-ui el-input-number 输入框不显示数字,默认清空
  5. 理解ODBC:DSN、ODBC管理器、驱动程序
  6. 360N5S:360N5S刷机
  7. python安装镜像numpy_[Python]使用镜像网站自动、自动和手动安装numpy,Numpy
  8. 分享127个ASP源码,总有一款适合您
  9. python编程从入门到实践 配套资源下载地址 免费!
  10. alisql mysql5.7_AliSQL 5.6.32 vs MySQL 5.7.15抢鲜测试