繁体   English   中英

减少多维数组

[英]Reducing a multi-dimensional array

我有一个带有一定数量维的数组,所以我并不是真正在考虑递归(除非将来出于可维护性考虑)。 它是从数据库中获得的数字数组,每一行都包含另一个数组。 每个2级数组都包含类似

var1, var2 , var3

等等。 请注意字符串中逗号的不规则外观。 因此,我打算在第三级中打破逗号分隔的字符串,然后将它们记录在最终数组中,但是我得到一个错误,说我正在提供一个空数组。 所以我想知道为什么它说数组为空,以及如何使它识别为有效数组。 我的代码如下:

function fetch_each($arr) {
$temp = array();

for ($i = 0; $i < count($arr); $i++) {
for ($j = 0; $j < count($arr[$i]); $j++) {
array_reduce(preg_split("/[\s,]+/", $arr[$i][$j]), function($a, $b) {
return array_push($temp, $a, $b);
});
}
}
return $temp;
}

PS:请不要将其标记为重复。 我不想复制别人的代码,但想了解为什么这不起作用。 谢谢。

您有此问题,因为$temp在功能块中不可见。 为了解决这个问题,您必须在函数定义旁边使用关键字use(variable_name) ,如本示例所示:

array_reduce(preg_split("/[\s,]+/", $arr[$i][$j]), function($a, $b) use (&$temp) {
        return array_push($temp, $a, $b);
});

仅需说明, $a将包含array_push的结果

返回:int数组中元素的新数量。

因此,您可以将其从array_push()指令中删除,以仅使用拆分后的字符串保持干净的数组

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM