我不确定如何用一个简短的问题来形容这一点...上面提到了许多不相关的答案,但如果之前有人问过,我道歉。
我正在尝试根据另一个的值创建一个变量名。
我可以简单地为每个语句创建if语句,但如果我能够按照我想要的方式声明变量,它将为我节省大约20-30行代码,并使未来的添加更加容易。
这是一个更好的描述。 这是我目前使用的代码。它在wordpress的短代码函数内,根据用户给定的参数创建一个按钮。
extract(shortcode_atts(array(
'size' => 'medium',
'link' => '#',
'text' => ''
), $atts));
$large_button_img = of_get_option('large_button_arrow_upload');
$button_pos = of_get_option('button_image_position');
if($button_pos == 'right' && !empty($button_img)){
$the_button = "<a href='" . $link . "' class='" . $size . "_button custom_button" . $button_pos ."'>" . $text . "<img src='" . $large_button_img . "' id='button_img' alt='button image' /></a>";
}elseif($button_pos == 'left' && !empty($button_img)){
$the_button = "<a href='" . $link . "' class='" . $size . "_button custom_button" . $button_pos ."'><img src='" . $large_button_img . "' id='button_img' alt='button image' />" . $text . "</a>";
}else
{
$the_button = "<a href='" . $link . "' class='" . $size . "_button custom_button'>" . $text . "</a>";
}
return $the_button;
在上面: 该函数从用户给出的短代码中提取“大小”,“链接”和“文本”的值,并生成一个按钮。它根据大小设置类... 目前我已将其用于用户可以为大,中,小按钮设置不同图像的位置。
问题: 可能吗 根据设置的大小返回图像源的名称。 soooo基本上相当于?
img src = '" . $($size)_button_img . "'
它将$ size的值放在它所引用的变量名称中,以告诉它之后要拉出哪个图像源? (所以上面的适当等价物会产生类似
的东西img src= '" . $large_button_img ."'
或者,如果用户选择了中等
img src= '" . $medium_button_img . "'
如果可能的话,这可以节省自己不得不为每个可能的选项编写if语句(基本上从上面复制if-ifelse-else的集合,每当我有新的大小设置可用时)......最终可能会变得更多效率问题。
提前感谢您提供的任何帮助:)
同时 请忽略上面代码中的任何语法错误...我正在阅读本文时正在研究这个问题,所以很可能,如果你看错了,它已经修复了。
答案 0 :(得分:2)
您可以简单地使用逻辑功能:
function somethingWithImage($img, $pos) {
if ($pos == 'right' && !empty($button_img)) {
$the_button = "<a href='" . $link . "' class='" . $size . "_button custom_button" . $pos ."'>" . $text . "<img src='" . $img . "' id='button_img' alt='button image' /></a>";
} elseif ($pos == 'left' && !empty($button_img)) {
$the_button = "<a href='" . $link . "' class='" . $size . "_button custom_button" . $pos ."'><img src='" . $img . "' id='button_img' alt='button image' />" . $text . "</a>";
} else {
$the_button = "<a href='" . $link . "' class='" . $size . "_button custom_button'>" . $text . "</a>";
}
return $the_button;
}
只要你想要任何参数,就可以随时调用它。
答案 1 :(得分:0)
您正在寻找的是variable variable names。
简短的例子:
$hello_text = 'Hello World!';
$bye_text = 'Goodbye World!';
$varname = 'hello';
echo ${$varname}_text; // Hello World!
// Is the same as:
echo $hello_text; // Hello World!
答案 2 :(得分:0)
正如我所提到的,您可以使用插值来创建变量:
$src = ${"{$size}_button_img"};
但我可以建议使用数组吗?您可以获得更清晰易懂的代码:
$sizes = array(
'large' => ...,
'medium' => ...,
);
if(isset($sizes[$size]))
$src = $sizes[$size];