我有这些for
循环:
for ($x = 0; $x<2;$x++){
$allproducts = array();
for ($y = 0; $y<105;$y++) { //<<<<<<<<<<<<< this (105) is the number I mean
$allproducts[] = 'test'.$y;
}
echo "<pre>";
echo "allproducts 0 -- ";
var_dump($allproducts);
echo "</pre>";
for ($i = 0; $i < count($allproducts); $i++) {
$result = array_slice($allproducts, 0, 20);
echo "<pre>";
echo "result -- ";
var_dump($result);
echo "</pre>";
$allproducts = (array_diff($allproducts, $result));
echo "<pre>";
echo "allproducts 1 -- ";
var_dump($allproducts);
echo "</pre>";
}}
在实际代码中(此处:)
for ($x = 0; $x<1;){
$allproducts = array();
$abfrage = "SELECT sku FROM skulist";
if ($result = $sql->query($abfrage))
{
while ($row = $result->fetch_assoc()) {
$allproducts[] = $row['sku'];
}
}
for ($i = 0; $i < count($allproducts); ++$i) {
$result = array_slice($allproducts, 0, 20);
$allproducts = (array_diff($allproducts, $result));
//.... more code
}}
...我从DB获取数据而不是for循环:
$allproducts = array();
for ($y = 0; $y<105;$y++) { //<<<<<<<<<<<<< this (105) is the number I mean
$allproducts[] = 'test'.$y;
}
但改为显示/更容易重建。
行为相同:
当我的数组中有105个条目时,我没有得到
的空数组输出echo "allproducts 1 -- ";
var_dump($allproducts);
这是期望的行为。
当我将105
更改为(例如)65
时,它会输出一个空数组
allproducts 1 -- array(0)
在第二个嵌套循环结束时:
for ($i = 0; $i < count($allproducts); $i++) {
现在我有 三个问题 :
答案 0 :(得分:2)
for ($i = 0; $i < count($allproducts); $i++) {
// ...
$allproducts = (array_diff($allproducts, $result));
您正在更改您的$allproducts
数组!那么你怎么能期望它可靠地运作呢?
相反,请尝试:
foreach( $allproducts as $i => $product)
虽然我必须承认我不确定你要做什么。