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


How to set individual actions for array items?

我正在使用Wordpress主题。这是一个产品展示区,我的客户需要我添加一个函数,以在一个小"正方形"(div)中直观地表示每个产品的可用颜色,并将background-color css属性设置为该颜色。

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

类似这样的东西:

  rojo, azul, verde, amarillo

该列表是西班牙语的,并带有颜色名称,以使管理该页面的不精明用户更容易处理。

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

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

因此,我需要做的是获取每个值,比如"rojo",让函数检查rojo是否在可用("支持")颜色列表中,并将其输出为与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

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

 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>';
}

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

您可以创建一个简单的映射:

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];
        }
    }    
}