使用数组的一组索引进行操作,而不在 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 中使用循环的主要内容,如果未能解决你的问题,请参考以下文章