0

我正在构建的站点是一个配置器,可让您选择某些项目的颜色。它将具有共享您的颜色配置的功能。它将生成一个带有查询字符串的 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");
?>

这是我使用 PHP 输入查询字符串颜色值的 HTML。此代码还在检查以确保颜色位于可用颜色的数组中。

<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。我想我正在寻找一种更简洁/优雅的方式。

4

2 回答 2

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>
于 2013-09-25T19:18:14.797 回答
0

首先,您使用 parse_url 是否有原因......不能只是通过 $_GET 或 $_REQUEST 获取变量?

其次,如果你想验证你的数据 in_array 是一个好方法。一个简单的清理方法是将其全部移动到您的 php 区域,然后简单地将验证后的数据输出到 html。

如果我正在构建它,我将从数据库中运行所有这些东西,这样你就可以查询数据库是否颜色有效。

我还会考虑通过 imagick 或 gd 生成图形服务器端。

于 2013-09-25T19:19:06.907 回答