我正在构建的网站是一个配置程序,可让您选择某些项目的颜色。它将具有共享您的颜色配置的功能。它将做的是生成带有查询字符串的URL,例如?plate=red&cup=blue&napkin=white
我的代码读取查询字符串并更改<img>
src
值。例如......
<?php
//This stuff is just grabbing the query string values...
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$querystring = parse_url($url);
parse_str($querystring['query'], $color);
$availableColors = array("red","blue","white");
?>
这是我的HTML,我使用PHP来输入查询字符串颜色值。此代码还检查以确保颜色是可用颜色的数组。
<div data-color="<?php if( in_array($color['plate'],$availableColors) ) {echo $color['plate'];} ?>">
<img src="img/tablesetting/<?php if( in_array($color['dinnerPlate'],$availableColors) ) {echo $color['plate']."_plate.png";} else {echo "dummy.gif";} ?>">
</div>
<div data-color="<?php if( in_array($color['napkin'],$availableColors) ) {echo $color['napkin'];} ?>">
<img src="img/tablesetting/<?php if( in_array($color['napkin'],$availableColors) ) {echo $color['napkin']."_napkin.png";} else {echo "dummy.gif";} ?>">
</div>
<div data-color="<?php if( in_array($color['cup'],$availableColors) ) {echo $color['cup'];} ?>">
<img src="img/tablesetting/<?php if( in_array($color['cup'],$availableColors) ) {echo $color['cup']."_cup.png";} else {echo "dummy.gif";} ?>">
</div>
我想做的是每次我想检查颜色值是否在我的数组availableColors
中时都避免使用条件语句。我想这只是一种更简洁/更优雅的方式,我正在寻找。
答案 0 :(得分:0)
function getColorData($color, $type) {
$result = array('color_name' => '', 'color_img' = 'dummy.gif');
$available_colors = array('red', 'blue', 'green');
if (in_array($color, $available_colors))
$result = array('color_name' => $color, 'color_img' = $color . '_' . $type . '.png');
return $result
}
用法示例:
$plate_color_data = getColorData($color['plate'], 'plate');
echo '<pre>',print_r($plate_color_data),'/<pre>'; // just for test)
<div data-color="<?=$plate_color_data['color_name']?>">
<img src="img/tablesetting/<?=$plate_color_data['color_img']?>">
</div>
答案 1 :(得分:0)
首先,你有没有理由使用parse_url ....不能只是通过$ _GET或$ _REQUEST获取变量?
其次,如果你想验证你的数据in_array是一个很好的方法。清理一切很简单的事情就是将它全部移动到你的php区域然后只需将经过验证的数据输出到html。
如果我正在构建这个,我会从数据库运行所有这些东西,这样你就可以查询数据库,如果颜色有效。
我还会考虑通过imagick或gd生成图形服务器端。