根据另一个变量的设置调用特定变量。(PHP)

时间:2013-12-11 14:53:40

标签: php variables

我不确定如何用一个简短的问题来形容这一点...上面提到了许多不相关的答案,但如果之前有人问过,我道歉。

我正在尝试根据另一个的值创建一个变量名。

我可以简单地为每个语句创建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的集合,每当我有新的大小设置可用时)......最终可能会变得更多效率问题。

提前感谢您提供的任何帮助:)

同时 请忽略上面代码中的任何语法错误...我正在阅读本文时正在研究这个问题,所以很可能,如果你看错了,它已经修复了。

3 个答案:

答案 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];