使用数组的一组索引进行操作,而不在 php 中使用循环

Posted

技术标签:

【中文标题】使用数组的一组索引进行操作,而不在 php 中使用循环【英文标题】:operating with group of indexes of an array without using loop in php 【发布时间】:2014-03-01 07:35:33 【问题描述】:

我有一个包含如下数据的数组:

$data=array(
    array(1,1),
    array(1,2),
    array(1,3),
    array(1,4),
    array(1,5),
    array(1,6),
    array(1,7)
);

我想对一组数据应用一些操作数,例如

(伪代码)

// get all indexes , after the second index of each index
$d = $data[all indexes][1] /10 ; //devided by 10


// multiple the second index of first to fifteenth indexes by 2
$d2=$data[0-15][1] * 2;

我知道我可以使用 foreach 或任何其他循环,但我正在寻找更好的方法。

【问题讨论】:

你想做什么? 我认为 OP 忘记添加问题的其余部分 对不起,发布数据时遇到问题,我刚刚编辑了它。 你想得到值的总和除以10/乘以2吗? 不,与之前相同的数据,但只是除以例如 10 ,输出必须像输入一样是一个数组 【参考方案1】:

嗯,我真的不明白你为什么不想使用循环,但如果它让你感觉更好,你可以使用“变相的循环”!

php 提供了一些函数来执行数组中的重复性任务,例如:

arrray_map - 保持基本数组不变 array_walk - 更改基本数组

array_map 示例

代码

$newData = array_map (function($subArray)

    return $subArray[1] / 10;
, $data);

输出

array (size=7)
  0 => float 0.1
  1 => float 0.2
  2 => float 0.3
  3 => float 0.4
  4 => float 0.5
  5 => float 0.6
  6 => float 0.7

对 OP 评论的回答:

如果是性能问题,那么 array_map 实际上比 foreach 或 for 循环慢。

我认为 PHP 没有内置库来处理矩阵运算。然而,在 PEAR 中的快速搜索发现了这个扩展:

http://pear.php.net/package/Math_Matrix

没用过不知道好不好用,包也不维护了

【讨论】:

谢谢,这是一个好方法,但是这种方式像其他循环一样需要时间来遍历数组的所有数据,我想知道 PHP 是否有更好的方法来处理 matlab 中的矩阵等数组? @user3365425 我认为 PHP 没有任何特定于矩阵的内置库,但请查看 pear.php.net/package/Math_Matrix

以上是关于使用数组的一组索引进行操作,而不在 php 中使用循环的主要内容,如果未能解决你的问题,请参考以下文章

PHP数组

更改特定索引而不在 Vuejs 中重新渲染整个数组

算法-排序系列04之快速排序

在多个属性上对PHP中的一组对象进行排序[重复]

具有多个变量的用户定义函数? / 对一系列命名列进行操作的函数(而不是按数字索引)?

数组的操作