减少多维数组

我有一个带有一定数量维度的数组,所以我不是真的在看递归的东西(除非是 为了将来的可维护性)。 它是从数据库获取的数字数组,每行包含另一个数组。 这些2级数组中的每一个都包含类似</ p>

var1,var2,var3 </ code> </ p>

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

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

for($ i = 0; $ i&lt; count ($ arr); $ i ++){
for($ j = 0; $ j&lt; count($ arr [$ i]); $ j ++){
array_reduce(preg_split(“/ [\ s,] + /” ,$ arr [$ i] [$ j]),函数($ a,$ b){
return array_push($ temp,$ a,$ b);
});
}
}
return $ temp;
}
</ code> </ pre>

PS:请不要标记为重复。 我不想复制别人的代码但想要理解为什么这不起作用。 谢谢。</ p>
</ div>

展开原文

原文

I have an array that carries a definite number of dimensions so I'm not really looking at something recursive (Unless maybe for maintainability sake in the future). It's a numeric array gotten from the database with each row holding another array. Each of those level 2 arrays contain strings like

var1, var2 , var3

And so on. Note the irregular appearance of commas in the string. So I intend to break the comma delimited string in the third level then log them in the final array but I get an error saying I am supplying an null array. So I want to know why it says the array is null and how I can make it recognise that as a valid array. My code goes below:

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: Please don't mark as duplicate. I don't want to copy someone else's code but want to understand why this does not work. Thanks.

1个回答



您遇到此问题,因为 $ temp </ code>在功能块中不可见。
要解决此问题,您 必须在函数定义旁边使用关键字 use(variable_name)</ strong>,如下例所示:</ p>

  array_reduce(preg_split(“/ [\ s,]  + /“,$ arr [$ i] [$ j]),函数($ a,$ b)使用(&amp; $ temp){
返回array_push($ temp,$ a,$ b);
} );
</ code> </ pre>

只需注释, $ a </ code>将包含array_push的结果</ p>

\ n

返回:int数组中新元素的数量。</ p>
</ blockquote>

因此,您可以从array_push()指令中删除它以保持一个干净的数组 只有拆分字符串</ p>
</ div>

展开原文

原文

You have this problem because $temp is not visible in the function block. To solve that, you must use the keyword use (variable_name) next to the function definition as in this example :

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

Just a remark, $a will contain the result of array_push

Returns:int the new number of elements in the array.

So you can remove it from the array_push() instruction to keep a clean array with only splitted strings

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐