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
div クラスに $color を含む、 return $thefiles
where = a long html 文字列を使用して、長いショートコードの最後にこれを出力します。$thefiles
** UPDATE 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;
}