0

私が構築しているサイトは、特定のアイテムの色を選択できるコンフィギュレーターです。カラー構成を共有する機能があります。?plate=red&cup=blue&napkin=white私のコードがクエリ文字列を読み取って値を変更するように、クエリ文字列を含む URL を生成します<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 に答える