【发布时间】:2014-02-10 15:40:32
【问题描述】:
这里是新手,正在开发他们的第二个功能。我在谷歌上搜索了一下我的问题,查看了 PHP.net 和一些关于堆栈溢出、WC3schools、CoralCode 等的文章,但我还没有找到任何我能理解的东西(我已经完成了我的我保证在乞讨之前尽职尽责。
我的函数的概念是,它将获取一个任意大小的数组,并以四行打印出来。函数当前返回的重复本身总体等于数组的大小。因此,如果数组有 8 个项目,它将返回九个组(通过在它们之间的白线视觉定义的分组)九个项目。第一个和最后一个有 16 个盒子,2-8 个有 32 个盒子,我希望得到两排四排,两排之间有一条线
见here for visual error 见here for how it's meant to look
总而言之,我的循环过度迭代/返回太多/没有以我希望的方式返回数据。我不知道如何表达这个问题,但我已尽我所能尽可能地提出这个问题。
function PrintFolio($aaPlaceholder)
{
//print out two rows of four from array with 8 items
//if array had 7 items, then print row of 4 next row 3
//if array had 16 items, print 4 rows of 4, etc.
$height = sizeof($aaPlaceholder);//get size of array
//loop through array of X items, for each group of 4 print as a row
for($row = 0; $row < $height; $row++) //looping through the rows
{
echo '<div class="row flush">'; //open div
for($image = 0; $image < 4; $image++) //each row is composed of 4 images
{
foreach($aaPlaceholder as $key => $value) {
printf(TEMPLATE_PORTFOLIO, $key, $value);
//replaced $template with constant TEMPLATE_PORTFOLIO!
}
}
echo '</div>'; //end div group of 4
}//end loop
}//end function
如果答案很明显,请记住我是新手,对我来说并不明显,或者老实说我不会问。
感谢您的帮助或指导 干杯
【问题讨论】:
-
您的内部
foreach将打印$aaPlaceholder中的每一项。这将在内部for循环的每次迭代中发生,而这又会在外部for循环的每次迭代中发生。所以你输出整个$aaPlaceholder的次数太多了。 -
在内部foreach中,再次使用$aaPlaceholder;也许你想要 $aaPlaceholder[$row]。
-
在两个
for循环之间,您已经在遍历数组中的所有项目。不应该有其他循环结构。当然,还有更优雅的解决方案,只需一个循环,但从这段代码开始,您应该首先意识到内部的foreach不会做任何您想做的事情。 -
我知道这很重要,我正在重新利用一些先前的代码来尝试让它做一些“更多”的事情。我将尝试添加“行”以查看会发生什么,我现在处于未知领域。谢谢各位。
-
我将 foreach 行修改为 'foreach($aaPlaceholder[$row] as $key => $value) {' 结果是两个错误。 1.) 未定义的偏移量:0。 2.) 为 foreach() 提供的参数无效。添加 '[$row]' 听起来是个好主意,但我认为我是 foobared。