【发布时间】:2019-04-27 10:06:46
【问题描述】:
我正在尝试将特定数据存储到 array 中,以便以后使用。
我尝试将数据按键存储在数组中。但它只是不断地循环比它需要的次数多得多。我设置了一个条件,当row = "configurable"(应该是每 5 行或 6 行)它会卸载数据并重新启动。因此,我可以将数据放入“可配置”行,然后重新开始。
我可能完全错了,但我看不出有其他解决方法。我也尝试将 "For" 循环放在 Foreach 中,但这只是给我带来了更多循环问题。
($Ptype 是在此循环之外声明的值。它应该每 4 - 6 行出现一次)
$rowArr =
[1] => Array
(
[0] => 5.5
[1] => sku123
[2] => default
[3] => simple
[4] => testData4
[5] => testData5
[6] => testData6
)
[2] => Array
(
[0] => 5.9
[1] => sku456
[2] => default
[3] => simple
[4] => testData4
[5] => testData5
[6] => testData6
)
$rowArr 持续大约 1000 行。我想获取值 [1] 和 [3],并在满足“if($ptype == 'configurable')”时放置它们。完成后,我想在 $rowData 数组中继续并重复,直到再次出现 if 语句。
所以输出应该是(我会稍微格式化一下):
[5.5, 简单, 5.9, 简单, ... , ...]
然后一旦满足 if 语句就应该删除它,以便为新的值腾出空间。
for ($i=1; $i < count($rowArr); $i++) {
$Data[] = $rowArr[$i][1];
$Data[] = $rowArr[$i][3];
// without a "break;" here, it gets too many rows.
}
if($ptype == 'configurable'){
$dataim = implode("," , $Data);
echo $dataim . "\n";
$dataim = "";
// If I "die;" here, it fills the first row correctly, but it needs to get every row.
reset($Data);
}
我也尝试过(我尝试过很多在休息时移动等):
for ($i=1; $i < count($rowArr); $i++) {
$Data[] = $rowArr[$i][1];
$Data[] = $rowArr[$i][3];
if($ptype == 'configurable'){
$dataim = implode("," , $Data);
echo $dataim . "\n";
$dataim = "";
reset($Data);
break;
}
}
总结:
从另一个数组存储值 [1] 和 [3]
一旦 [3] 值可配置,转储数据并在数组中重新开始。无限期地继续,直到行完成。
实际结果:
只是一遍又一遍地循环前 2 个值,如果实现了中断,则不会获取任何其他数据。如果
foreach循环中没有中断,它将永远循环。在 for 循环中使用
"die;",它会获取正确的数据,但仅限于第一行。
【问题讨论】:
-
你能发布什么值
rowArr和你的预期输出 -
@RakeshJakhar 我已经编辑了原帖