Php 如果所有数组的逻辑都相同,如何避免重复foreach?

Php 如果所有数组的逻辑都相同,如何避免重复foreach?,php,foreach,Php,Foreach,这个问题是关于如何在PHP中生成更好的代码 我有多个数组(准确地说是5个)。我必须对所有这些应用相同的逻辑。 我怎样才能避免为所有这些代码重复代码 $cpus = getCPUs(); // Get array 1 dimension with key $rams = getRAMs(); // Get array 1 dimension with key 我的意思是,里面的代码,我只需要创建一个函数。没关系。 但我仍然必须为每个数组声明一个foreach循环 有没有办法避免这种情况?这就像是

这个问题是关于如何在PHP中生成更好的代码

我有多个数组(准确地说是5个)。我必须对所有这些应用相同的逻辑。 我怎样才能避免为所有这些代码重复代码

$cpus = getCPUs(); // Get array 1 dimension with key
$rams = getRAMs(); // Get array 1 dimension with key
我的意思是,里面的代码,我只需要创建一个函数。没关系。 但我仍然必须为每个数组声明一个foreach循环

有没有办法避免这种情况?这就像是让我的foreach循环参数来自变量

foreach ($cpus as $key_cpu => &$cpu) {
    // FUNCTION XXX
}

foreach ($rams as $key_ram => &$ram) {
    // FUNCTION XXX
}

考虑到

为循环所有数组编写通用的函数/方法,并返回您想要的任何内容

function loop_array($array){

    $return_data=array()
    foreach ($array as $key => &$data) {

            // FUNCTION XXX
    }

    return $return_data;
}

您只需使用两个
foreach
s即可:

foreach ([&$cpus, &$rams] as &$components) {
  foreach ($components as $key => &$component) {
     // FUNCTION XXX
  }
}
请注意,所有这些引用都需要能够为
$component
分配另一个值,并使其同时修改原始值(如所建议的问题)。理想情况下,如果可以的话,你应该避免这样做。如果这些组件是数组,请改为使用对象进行探索


感谢@AterLux提供以下有用的评论。

是否要合并
CPU
rams
array?创建一个函数,该函数将array作为参数,然后执行
foreach()
然后返回您的数组查看
array\u merge
array\u merge\u recursive
并可能查看
array\u map
@ttrasn不,我不知道,这就是为什么在不同的数组中存在拆分。键是否相关?两种类型之间会有重复的吗?我真的很喜欢这一种,我一直在寻找它!现在,我只需要创建一个数组作为组件,它包含我的所有数组,我们开始吧!谢谢它只是避免调用X次我的函数,每个数组调用一次。。。想象一下,如果我有100个数组,我认为它应该是外部循环中的
&$components
。否则,将删除副本created@AterLux事实上,至少在PHP7中没有。仅当您修改阵列时,才会进行复制。看,甚至看。应该避免。@Jeto这对于早期版本的PHP也是正确的,但这不是我所说的。注意代码中的
和$component
。这意味着要修改数组项的值。尽管
$cpu
$rams
也必须通过引用传递才能实现这一点。