Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中,如何在不迭代的情况下一次乘法所有数组元素?_Php_Arrays - Fatal编程技术网

在php中,如何在不迭代的情况下一次乘法所有数组元素?

在php中,如何在不迭代的情况下一次乘法所有数组元素?,php,arrays,Php,Arrays,我有一个由超过25k个元素组成的数组。所有数组值都是整数。现在我想用这个数组的所有元素乘以某个数字“n”。。。。在不使用foreach的情况下,如何使用I.e.遍历每个元素 我正在寻找这个bcoz迭代通过如此大的数组可能会影响性能 Deepak有一个数组_sum(),但没有数组乘法器函数 您将需要迭代(或者使用array\u map(),它只是从您那里抽象出迭代) 我还要确保您的数字不会溢出PHP的最大整数大小(在您的平台上检查PHP\u INT\u max)。您可能需要使用。因为有一大堆被删除

我有一个由超过25k个元素组成的数组。所有数组值都是整数。现在我想用这个数组的所有元素乘以某个数字“n”。。。。在不使用foreach的情况下,如何使用I.e.遍历每个元素

我正在寻找这个bcoz迭代通过如此大的数组可能会影响性能


Deepak有一个
数组_sum()
,但没有数组乘法器函数

您将需要迭代(或者使用
array\u map()
,它只是从您那里抽象出迭代)


我还要确保您的数字不会溢出PHP的最大整数大小(在您的平台上检查
PHP\u INT\u max
)。您可能需要使用。

因为有一大堆被删除的答案,这些答案都是正确的


  • 您将不得不以某种方式对数组进行迭代。甚至使用类似于array_map()的东西(参见其他两个答案)也会导致PHP在内部迭代数组

  • 优化25k次迭代的最佳方法是避免这样大的迭代次数至少将其置于性能不显著的背景中

  • 不管怎样,如果你达到了这一点,最快的方法就是测试。看起来aaray_地图是最差的

  • “可能影响性能”不是优化的有效理由。确保它确实会影响性能。如果您确信它会对性能产生负面影响,请考虑使用SPL数据结构中的一个< /P>
    这仍然会让您进行迭代,但对于大型数据集,这些数据结构可能会在执行速度和内存消耗方面产生差异。

    使用下面的方法

    function arrayFunc($e){
        if(is_array($e)) return array_map('arrayFunc', $e);
        else return $e; // Set your changes here for example change this line to : else return $e * 1000;
    }
    $array = arrayFunc($array);
    

    您将不得不以某种方式对数组进行迭代。甚至像
    array\u map()
    (参见下面使用它的答案)这样的东西也会导致PHP在数组内部进行迭代。虽然不会有任何性能提升-这个答案至少抓住了要点,回答了OP提出的问题:)@JP19尽管它是迭代,只是隐式的。我的两分钱:考虑到这个问题本身有点傻,我不明白“溢出”注释加了什么值-这对于PHP中的任何乘法运算都是正确的,并且与这个问题无关。@JP19我把它理解为
    如何将所有数组元素[一起]相乘
    ,他注意到有25k,这确实可能成为一个很大的数字。哦,对不起。那么我的评论真的是无效的,你的回答真的很有用。我怀疑他指的是2.5万个数字,尤其是他说的“n”
    
    function arrayFunc($e){
        if(is_array($e)) return array_map('arrayFunc', $e);
        else return $e; // Set your changes here for example change this line to : else return $e * 1000;
    }
    $array = arrayFunc($array);