在将数组推送到另一个数组之前,如果满足某个条件,我会尝试将数组元素添加到数组中。现在它将值添加为单独的数组,并且它不在同一个数组中。
Sub WorkseetParsingLoopToGetData()
Dim I as Integer
Dim WS_Count as Integer
Dim ConsolidationArray as Variant
WS_Count = ActiveWorkbook.Worksheets.Count 'last worksheet
ReDim ConsolidationArray(2 to WS_Count) 'Array to be Sheet2 to last worksheet
For I = 2 to WS_Count
ConsolidationArray(I) = Worksheets(I).Name & "!C54:H56"
Next I
Sheets("Summary").Range("J4").Consolidate sources:=(ConsolidationArray), Function:=xlAverage
End Sub
当前结果:
<?php
for ($i = 0; $i < 4; $i++) {
$ret1[] = array("A" . $i, "B" . $i);
if ($i > 2) {
$ret1[] = array("C" . $i);
}
}
print_r($ret1);
?>
预期结果:
Array
(
[0] => Array
(
[0] => A0
[1] => B0
)
[1] => Array
(
[0] => A1
[1] => B1
)
[2] => Array
(
[0] => A2
[1] => B2
)
[3] => Array
(
[0] => A3
[1] => B3
)
[4] => Array
(
[0] => C3
)
)
答案 0 :(得分:1)
您可以使用临时变量来定义数组。然后你可以决定根据你的情况将另一个元素推送到它。最后,您可以将临时数组推送到$ret1
数组以获得所需的结果。
for ($i=0; $i<5; $i++) {
$arr = ["A$i", "B$i"];
if ($i > 2) {
$arr[] = "C$i";
}
$ret1[] = $arr;
}
您正在做的是在循环的最后2次迭代中将2个元素推送到数组。一个值为["A3", "B3"]
,另一个值为["C3"]
,只会产生[["A3", "B3"], ["C3"]]
,这不是您之后的结果。通过使用临时变量$arr
,我们将最终数组推迟到$ret1
,直到执行或绕过条件语句为止。
例如,在此循环的倒数第二次迭代中,$arr
的值最初为["A3","B3"]
,然后我们将另一个值"C3"
推送到$arr
的末尾在$i > 2
true
,$arr = ["A3","B3","C3"]
,最后我们将$arr
推送到数组$ret1
的末尾,为我们提供最终结果{{1} }
这对你的问题或问题都不重要,但我想我会把它扔出去以防万一。
在PHP中,double quoted strings为您提供自动变量扩展。这意味着[ ..., 3 => ["A3","B3","C3"], ...]
。所以只需考虑一下。此外,还有一个short-hand syntax for arrays,可用since PHP 5.4.0,我个人认为比使用传统的"A$i" === "A" . $i
结构更容易编写和阅读。所以array()
。
答案 1 :(得分:1)
您每次使用
时,您所做的并不是给您预期的结果$ret1[] = something
PHP会在$ret
中自动创建新索引。
如果您想将另一个字符串追加到刚刚插入$ret
的数组中,可以使用$ret1[$i][] = "C" . $i;
而不是$ret1[] = array("C" . $i);
指定当前密钥。