【问题标题】:Execute same logic for multiple multidimensional arrays对多个多维数组执行相同的逻辑
【发布时间】:2019-10-14 09:31:46
【问题描述】:

我目前正在尝试以下方法:

我定义了多个数组。它们都是通过从数据库中获取数据来填充的,因此它们都包含相同的列/数据结构,但具有不同的数据。例如,假设数组是不同的学校,那么有:

//pseudoCode:
array1 = ({"Name: Peter", "Surname: not peter"},{"Name: doe", "Surname: john"});
array2 = ({"Name: asfwe", "Surname: qwfqwf"},{"Name: asfas", "Surname: fsbng"});
array3 = ({"Name: weqw", "Surname: wqeqewqw"},{"Name: doqweqwee", "Surname: wewe"});

现在,对于所有这些数组,我想做同样的事情。就我而言,我有多个 if else 情况,检查数组的长度并做一些事情。

到目前为止,我只为数组 1 做这件事。现在我的第一个想法是简单地复制逻辑并将所有变量名分别重构为array2到array3,但这没有意义,因为在我的真实案例中,它的10个数组而不是3个,逻辑大约是150行代码,所以我会有很多重复的代码,如果逻辑中的某些内容发生变化,我需要在任何地方进行更改。

现在的问题是:如何对每个数组执行相同的程序?

所以我需要的是这样的:

//pseudoCode again
foreach(array in array1, array2, array3, array4, array5,....){
//do something with variable "array", which is actually one of the defined arrays
}

正确方向的提示会很棒。

提前谢谢你。

【问题讨论】:

  • 使用array_merge() ?
  • 将所有逻辑导出到封装数组修改的函数?
  • @AymDev 我仍然需要能够在数组之间进行区分......而且我不知道每个数组的长度,只知道结构
  • 然后就像@dWinder 说的,使用一个函数。
  • foreach ($all_your_arrays as $arr) { do_stuff_to_process_array($arr); }?基本上,只需在伪代码中的 array1, array2...arrayN 周围添加 [] 即可将它们全部分组到一个数组中以创建 $all_your_arrays

标签: php arrays function multidimensional-array foreach


【解决方案1】:

程序代码需要导出逻辑到函数:

function foo($array) {
    // modify the array or do what ever you need
    return $array; // in case it has been modify
}

现在你可以充当:

foreach($arrays as &$arr)
    $arr = foo($arr); // calling the function on each array
    // the re-assign is just in case it has been modify

在此示例中,$arrays 代表数组,所有内部数组为:

$arrays = array($array1, $array2, $array3, ...) 

如果您的数组是从其他函数/SQL 代码动态获取的:

$arrays = []; // init empty array
while (@SOME_CONDITION@) {
    $arrays[] = getAnotherArrayFunction(); // append the array to your array
}

【讨论】:

  • 哦,伙计,我很愚蠢,如果这可行,那么它真的比我想的更简单。问题是,PHP 可以处理多少个维度?通过调用 $arrays[0][0]["Surname"] 来访问 $array1 中的一项(假设是 peter 的姓氏)会是一个问题吗?这样可以吗?
  • 是的。 PHP 可以处理更深层次的多维数组。是的 - 您可以通过 $arrays[0][0]["Surname"] 访问它们
  • 好的,非常感谢! :) 基本上我只是错过了将所有数组分配给一个大数组的部分,所以我不知道如何使用每个数组的函数...
猜你喜欢
  • 2021-02-13
  • 1970-01-01
  • 2017-02-23
  • 2012-06-08
  • 1970-01-01
  • 2019-02-28
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多