我正在一个 foreach 循环中工作,并试图将我的 array_rand 放在一个 if 语句中。它在 if 语句中不起作用,但如果我将它从 if 语句中取出(按原样),它会起作用。顺便说一下,在 foreach 循环的内部和外部都是如此。无论我将它放在循环之前还是之后,它都不会在 if 语句中工作。但是如果我将它从 if 语句中取出,它将在循环之前或之后工作。
foreach($files as $file) {
$randcolor = array("red","green","blue","yellow","brown","black","orange","white","silver","purple","pink");
if(isset($color)) {
$color = $color;
}
else {
$color = $randcolor[array_rand($randcolor)];
}
... bunch of other stuff
}
if($color === 'red'){etc.}
我已经尝试在他们自己的陈述中拼出每种颜色 。我试过 if(!$color){$color = $randcolor[array_rand($randcolor)];}
没有任何效果。它在 if 语句中不起作用。如果我把它拿出来,它会起作用,但是我不能再用 $color 属性定义特定的颜色了。奇怪的是,即使我在无条件的 array_rand 语句之后定义了特定的颜色,它仍然会接管并覆盖任何其他颜色规范。
编辑忘记提及“将不起作用”我的意思是,它根本不输出任何字符串。只是空白。
更新
为清楚起见: $color 是简码中的一个属性,因此它由简码本身定义。
更新 2
我在一个长短代码的末尾输出它,return $thefiles
其中$thefiles
包含一个长 html 字符串,其中包括 div 类中的 $color 。
** 更新 3 ** 更多代码:
foreach($files as $file) {
$randcolor = array("red","green","blue","yellow","brown","black","orange","white","silver","purple","pink");
if(!($color)){$color = $randcolor[array_rand($randcolor)];}
$thefiles .= '<a id="sssf" style="width:'.$width.$perpx.'" class="'.$style.$corners.'" href="'.$link.'" download><div class="sssf-filetype sssf-'.$color.'"><div class="sssf-label">'.$ftype.'</div></div>'.$cleanName.' <span style="float:right;">'.$fsize.'</span></a>';
unset($color);
}
}
return $thefiles;
}