仅根据需要在PHP数组中添加项
我想在我的站点中加入一些代码,并在仅根据需要在PHP数组中添加项,php,loops,Php,Loops,我想在我的站点中加入一些代码,并在之后使用设计之外的“flairs”(divs)设置一个空间。代码如下: //Add Flair Containers as needed if($flairs>0){ echo "<!--Flair Graphics (if needed)-->\n"; while($fQty = --$flairs+1){ //-- subracts 1, +1 accounts for 1 being 0 $flair = arr
之后使用设计之外的“flairs”(divs)设置一个空间。代码如下:
//Add Flair Containers as needed
if($flairs>0){
echo "<!--Flair Graphics (if needed)-->\n";
while($fQty = --$flairs+1){ //-- subracts 1, +1 accounts for 1 being 0
$flair = array($flair1, $flair2, $flair3);
foreach($flair as $flairCode){
echo "<div id=\"flair-".$fQty++."\">".$flairCode."</div>\n";
};
};
};
//根据需要添加Flair容器
如果($flairs>0){
回音“\n”;
虽然($fQty=--$flairs+1){/--subracts 1,+1说明1为0
$flair=阵列($flair1,$flair2,$flair3);
foreach($flair作为$flairCode){
回显“$flairCode”。\n”;
};
};
};
它可以正确打印,其中content=$flair1、$flair2,依此类推
<div id="flair-1">Content1</div>
<div id="flair-2">Content2</div>
<div id="flair-3">Content3</div>
Content1
内容2
内容3
但是,如果$flair2/$flair3为空,它仍会打印一个div。如何解决此问题?在
foreach
循环中,您可以检查该值是否为,如果为,则跳到下一个值
像这样:
if($flairs>0){
echo "<!--Flair Graphics (if needed)-->\n";
while($fQty = --$flairs+1){ //-- subracts 1, +1 accounts for 1 being 0
$flair = array($flair1, $flair2, $flair3);
foreach($flair as $flairCode){
if (empty($flairCode)) continue;
echo "<div id=\"flair-".$fQty++."\">".$flairCode."</div>\n";
};
};
};
if($flairs>0){
回音“\n”;
虽然($fQty=--$flairs+1){/--subracts 1,+1说明1为0
$flair=阵列($flair1,$flair2,$flair3);
foreach($flair作为$flairCode){
如果(空($flairCode))继续;
回显“$flairCode”。\n”;
};
};
};
我想你可以简单地在echo语句前面加上if($flairCode)
。这将使您的内部循环:
foreach($flair as $flairCode){
if($flairCode) echo "<div id=\"flair-".$fQty++."\">".$flairCode."</div>\n";
};
foreach($flair作为$flairCode){
如果($flairCode)回显“$flairCode”。\n”;
};
需要注意的几点:
- 由于
数组始终是相同的,因此在循环之外构造它(这将使您也只对条件进行一次评估)$flair
- 使用
不足以保证ID的唯一性,特别是因为每次它在$fQty++
时碰到
时,值都会被重置。我建议
不应成为$fQty
时的
条件的一部分,而应作为独立的计数保留
- 不要用双引号,它们很慢
$fQty=-$flairs+1
是什么使$flairs总是相同的呢?例如,如果$flairs是5,则使其成为4和+1 5?对于您的问题,即使$flair2
/$flair3
为空,$flair
仍然是一个包含元素的数组(至少使用$flair1
,更不用说null
仍然构成元素),因此,foreach
仍在运行。@Passenger是的,我知道会的,我只是想不出一种方法来检查它是否存在。@nullpointer+1只是让值正确打印出来。可能有更好的方法,但效果很好。如果要包含换行符(\n),则需要双引号。此外,如果双引号与单引号存在的话,其性能影响可以忽略不计。请参阅。酷。我尽可能使用单引号,但我希望我的最终代码看起来不错。在我成为程序员之前,我是一名设计师,所以这对我很重要。可以使用PHP\u EOL
(这给出了特定于平台的行结尾,因此我认为它无论如何都更好).至于单引号和双引号,这些数字对我来说是新的。上次我运行基准测试时,单引号的运行速度始终快了1-2%。我将看看是否无法从服务器和命令行重新运行他的应用程序,并查看弹出的内容。我会说,因为他是手动连接的,而且他正在逃避双引号为了做到这一点,我认为如果他使用单引号,他的代码的格式会更好。