Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何为数组项设置单个操作?_Php_Arrays - Fatal编程技术网

Php 如何为数组项设置单个操作?

Php 如何为数组项设置单个操作?,php,arrays,Php,Arrays,我正在处理一个Wordpress主题。这是一个产品展示,我的客户需要我添加一个函数,在一个小的方形div中直观地表示每个产品的可用颜色,背景色css属性设置为该颜色 在wordpress中,我设置每个产品帖子都有一个名为colorStock的自定义元字段,他们可以在其中以逗号分隔的列表列出可用的颜色 大概是这样的: rojo, azul, verde, amarillo 该列表是西班牙文的,并带有颜色名称,以使管理此页面的不精明用户更容易操作 所以,我想做的是一个函数,它将获取这些元字段值

我正在处理一个Wordpress主题。这是一个产品展示,我的客户需要我添加一个函数,在一个小的方形div中直观地表示每个产品的可用颜色,背景色css属性设置为该颜色

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

大概是这样的:

  rojo, azul, verde, amarillo
该列表是西班牙文的,并带有颜色名称,以使管理此页面的不精明用户更容易操作

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

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

因此,我需要做的是获取每个值,比如rojo,并让函数检查rojo是否在可用的支持颜色列表中,并将其作为有效的颜色名称或与rojo相关的值输出。e、 g.rojo=红色或rojo=F5

到目前为止,我有以下代码:

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_数组用法可能毫无意义,但问题是我需要函数获取每个数组项,查看它是否匹配任何等价列表项,然后移动到下一个数组项。因此,我将能够为每个项目输出一个单独的div,无论管理员列出1或20种颜色

有什么想法吗

编辑:

顺便说一下:$colorStockoutputs: 罗霍、维德、阿苏尔、阿马里洛

和$myArrayoutputs:
数组[0]=>rojo[1]=>verde[2]=>azul

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

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

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

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];
        }
    }    
}
您可以尝试这样的方法,您需要将西班牙语值映射到正确的十六进制css值。我希望有帮助!有关css颜色列表,请访问此处


您可以尝试这样的方法,您需要将西班牙语值映射到正确的十六进制css值。我希望有帮助!要查看css颜色列表,请访问此处

如果我理解正确,只需删除foreach循环即可。explode语句创建一个数组,然后只运行ifin_数组。。。声明。。。不需要在阵列中循环。。。或者,您可以保留foreach并在其中放入switch语句,然后比较值……当我这样做时,它只与列表的第一个值一起工作。如果我理解正确,你只需要删除foreach循环。explode语句创建一个数组,然后只运行ifin_数组。。。声明。。。不需要在阵列中循环。。。或者,您可以保留foreach并在其中放入switch语句,然后比较值……当我这样做时,它只与列表的第一个值一起工作。不是所有人都这么说。你好,莱安德罗!此解决方案有效,但仅对第一个值显示一个红方块:/Nevermind。我知道了!示例中逗号和下一项的第一个字符之间没有空格。而$colorStock的价值是:谢谢!这帮了大忙!你好,莱安德罗!此解决方案有效,但仅对第一个值显示一个红方块:/Nevermind。我知道了!示例中逗号和下一项的第一个字符之间没有空格。而$colorStock的价值是:谢谢!这帮了大忙!您好webbiedave,这个解决方案只适用于第一个值,我有三种颜色rojo、verde、azul,它输出红色三倍是的!我想出来了。示例中逗号和下一项的第一个字符之间没有空格。而$colorStock的价值是:谢谢!这帮了大忙!您好webbiedave,这个解决方案只适用于第一个值,我有三种颜色rojo、verde、azul,它输出红色三倍是的!我想出来了。示例中逗号和下一项的第一个字符之间没有空格。而$colorStock的价值是:谢谢!这帮了大忙!