我试图用for循环填充数组。这样做是为了获得某本书的页数。但是在执行代码时,它会跳过数组中的第一个对象。谁能告诉我为什么? (我认为这是因为$ I从1开始,而不是0,但似乎并没有改变任何东西)PHP For循环跳过第一个结果
if(!empty($article['finishing'])){
$numPages = $article['copies'];
$arrayIndexNumber = [];
for($i=1; $i <= $numPages; $i++){
$arrayIndexNumber[] = $i;
}
if(count($arrayIndexNumber) >= 1){
if(count($arrayIndexNumber) == 1){
$output['attributes']['EFPageRange'] = 1;
$print_jobs[$article['id']][] = $output;
}
if(count($arrayIndexNumber) > 1){
$comma_separated1 = implode(", ", ['1', $article['copies']]);
$output['attributes']['EFPageRange'] = $comma_separated1;
$print_jobs[$article['id']][] = $output;
}
array_shift($arrayIndexNumber);
array_pop($arrayIndexNumber);
$comma_separated2 = implode(", ", $arrayIndexNumber);
$output['attributes']['EFPageRange'] = $comma_separated2;
if(count($arrayIndexNumber) >= 2){
$print_jobs[$article['id']][] = $output;
}
}
$article['file_url'] = 'i has finishing';
$output['attributes']['username'] = $article['file_url'];
}
上面的代码输出:的
[0] => Array
(
[attributes] => Array
(
[title] => 277569
[EFPrintSize] => a4
[num copies] => 1
[num pages] => 119
[EFPCName] => 80
[EFDuplex] => TopTop
[EFPageRange] => 1, 119
)
)
代替:
[0] => Array
(
[attributes] => Array
(
[title] => 277564
[EFPrintSize] => a4
[num copies] => 1
[num pages] => 45
[EFPCName] => 80
[EFDuplex] => false
[EFPageRange] => 1, 45
[username] => i has finishing
[EFColorMode] => Grayscale
)
)
通过这样做,我的“PageRange”属性将不再匹配 – Dannylycka
我刚刚告诉你哪里做错了。如果正常的迭代不起作用,并打破了代码的其余部分,则应该修复那些破坏正常逻辑流程的部分。不要打我,不要打php的内部逻辑 - 只是去错误的逻辑根据错误的假设修复 - )) – marmeladze
只是因为indizies从零开始,并不意味着每个使用数组的循环都需要从零开始。 –