如何为数组项设置单独的操作?

时间:2012-03-28 21:12:23

标签: php arrays

我正在使用Wordpress主题。它是一个产品展示,我的客户需要我添加一个功能,在一个小的方形中可视地表示每种产品的可用颜色。 (div)将background-color css属性设置为该颜色。

在wordpress中,我将每个产品帖子设置为一个名为" colorStock"的自定义元字段。他们可以在逗号分隔列表中列出可用的颜色。

这样的事情:

  rojo, azul, verde, amarillo

该列表采用西班牙语和颜色名称,以便为管理此页面的不精通用户提供便利。

所以,我想要做的是一个函数,它将获取这些元字段值,将它们放在一个数组中,并为每个项目执行不同的操作。

为什么呢?好吧,因为这些值将用于为代表颜色的小div设置css background-color

所以,我需要做的是取每个值,让我们说" rojo",然后让函数检查rojo是否在可用列表中(& #34;支持")颜色并将其输出为与rojo相关的有效颜色名称或值。 (例如"rojo = "red""rojo" = "#f5f5f5")。

到目前为止,我有这段代码:

function colorStock(){
    $postID = get_the_ID();
    $colorStock = get_post_meta($postID, 'colorStock', true); //Get Colours available
    $myArray = explode(',', $colorStock);
    //print_r($myArray); 
//echo $myArray;


     foreach ($myArray as $item){

        if (in_array("rojo", $item)) {
            echo "red";
        }
        if (in_array("verde", $item)) {
            echo "green";
        }
        if (in_array("azul", $item)) {
            echo "blue";
        }
        if (in_array("blanco", $item)) {
            echo "white";
        }
        if (in_array("negro", $item)) {
            echo "black";
        }
        if (in_array("amarillo", $item)) {
            echo "yellow";
        }
    }      
   }

我知道我的in_array用法根本没有意义,但问题是我需要函数来获取每个数组项,看它是否匹配任何等价列表项,然后移动到下一个数组项。因此,无论管理员列出1种或20种颜色,我都能为每个项目输出个人div

有什么想法吗?


编辑:

顺便说一下:$colorStock输出: rojo, verde, azul, amarillo

$myArray输出: Array ( [0] => rojo [1] => verde [2] => azul )

2 个答案:

答案 0 :(得分:3)

 foreach ($myArray as $item){ 

    $css_colors = array('verde' => '#008000', 
                            'rojo' => '#ff0000',
                            'azul' => '#0000ff',
                            'blanco' => '#ffffff',
                            'negro' => '#000000',
                            'amarillo' => '#ffff00');
    foreach ( $css_colors as $colorname => $value) {

     if ($colorname == $item) { 
            display_color($value);
    } 
   }
}  

function display_color($color)
{
    echo '<div style="width: 40px; height: 40px; background: '. $color . ';">&nbsp;</div>';
}

您可以尝试这样的操作,您需要将西班牙语值映射到正确的十六进制css值。我希望它有所帮助!有关css颜色的列表,请访问http://www.w3schools.com/cssref/css_colornames.asp

答案 1 :(得分:2)

您可以创建一个简单的地图:

function colorStock() 
{
    $postID = get_the_ID();
    $colorStock = get_post_meta($postID, 'colorStock', true); //Get Colours available
    $colors = explode(',', $colorStock);

    $colorMap = array(
        'rojo'=>'red',
        'verde'=>'green'
    );

    foreach ($colors as $color) {
        if (isset($colorMap[$color])) {
            echo $colorMap[$color];
        }
    }    
}