文件夹中的文件没有通过for循环循环

时间:2015-12-30 19:07:16

标签: php xml

当我尝试循环看起来像这样的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 . ',';
}
}

我获取了所有数据,但仅限于一个文件。我不确定我做错了什么。如果有人可以帮助我,我会非常感激。

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

2 个答案:

答案 0 :(得分:1)

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

当你调用:$groupedArrays时应该返回一个数组数组(如果有意义的话)。

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

array_chunk($singleArray, 5, false);

但是你期待的是:

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

我不完全确定这里需要array( 0 => 0, 1 => 1, 2 => 2, )

我会在您创建该阵列后立即通过调用array_chunk输出您的$groupedArrays并查看实际存在的内容。

为了获得3个数组,请尝试像这样调用print_r($groupedArrays);

array_chunk

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

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

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

答案 1 :(得分:0)

simplemxl值存在问题。即:

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

这在某些xml文件中并不存在。

感谢。