文件夹中的文件未使用for循环进行循环


File in a folder are not being cycled through with for loop

当我试图循环通过我的for循环时,它看起来像这样:

$singleArray = array_column($upcValuesFromArray, count($upcValuesFromArray));
$groupedArrays = array_chunk($singleArray, 5, false); 
for($i = 0; $i < count($groupedArrays); $i++){
    $xmlFilePath = 'xml/' . $file_name . $i . '.xml';
    $xml = simplexml_load_file($xmlFilePath);
    echo $xmlFilePath;
foreach($xml->children() as $items) { 
     //Pull UPC data
    echo $items['Id'] . ',';
    //Verify complete listing
    if (isset($items->Products->Product->SalesRankings->SalesRank[0]->Rank) == false) {
        //Pull ASIN data
        echo $items->Products->Product->Identifiers->MarketplaceASIN->ASIN . ',';
        //Pull pricing data
        echo $items->Products->Product->AttributeSets->children('ns2', true)->ItemAttributes->ListPrice->Amount . ',';

        continue;
    } 
    //Pull sales rank data
    echo $items->Products->Product->SalesRankings->SalesRank[0]->Rank . ',';
    //Pull pricing data
    echo $items->Products->Product->AttributeSets->children('ns2', true)->ItemAttributes->ListPrice->Amount . ',';
}
}

我得到了所有的数据,但只有一个文件。我不确定我做错了什么。如果有人能帮助我,我将不胜感激

提前谢谢!我很感激你的帮助。

似乎$groupedArrays可能只包含1个值,这解释了为什么它在第一个循环中只迭代一次。

当您调用:array_chunk($singleArray, 5, false);时,如果有意义的话,它应该返回一个数组。

因此,得到的数组看起来像:

array(
    0 => array(
       0 => 0, 
       1 => 1, 
       2 => 2,
    )
)

然而,你期待的是:

array(
    0 => 0, 
    1 => 1, 
    2 => 2,
)

我不完全确定这里是否需要array_chunk

首先,我会在创建该数组后立即调用print_r($groupedArrays);来输出$groupedArrays,看看实际有什么。


为了获得3个数组,请尝试调用array_chunk,如下所示:

$groupedArrays = array_chunk($singleArray, 1, false); 

这应该会产生类似的结果:

array(
    0 => array(
        0 => 0, 
    ),   
    1 => array( 
        0 => 1, 
    ),
    2 => array(
        0 => 2,
    )
)

现在,您的循环将按预期迭代3个文件,但这对您的任务来说似乎过于复杂。

simplemxl值出现问题。即:

$items->Products->Product->SalesRankings->SalesRank[0]->Rank

这在一些xml文件中不存在。

谢谢。