【问题标题】:operating with group of indexes of an array without using loop in php使用数组的一组索引进行操作,而不在 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 ,输出必须像输入一样是一个数组

标签: php arrays grouping operation


【解决方案1】:

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

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


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
猜你喜欢
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2014-12-16
  • 1970-01-01
  • 2021-12-25
相关资源
最近更新 更多