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