PHP根据存在多少变量来更改输出

时间:2018-05-01 10:29:57

标签: php variables

道歉,如果这是一个简单的问题和/或它是荒谬的。

我尝试做的是根据2个简单变量更改字符串的输出。

这是原始变量;

$src = 'http://example.org';

我有以下选项变量从Wordpress短代码中提取数据(如果存在);

$bg = $attr['background'];
$col = $attr['color'];

我想要实现的是,如果两个选项变量都没有值,则原始变量保持不变。

如果只存在一个选项变量,则原始变量的值变为;

http://example.org?background='.$bg.'

http://example.org?color='.$col.'

取决于哪一个有值。

如果两个选项变量都有值,则原始值需要变为;

http://example.org?background='.$bg.'&color='.$col.'

有人能指出我正确的方向吗?非常感谢。

3 个答案:

答案 0 :(得分:1)

试试这个:

$src = 'http://example.org';
$start = '?';

if(isset($attr['background'])) {
    $src .= $start . 'background=' . $attr['background'];
    $start = '&';
}

if(isset($attr['color'])) $src .= $start . 'col=' . $attr['color'];

应该是不言自明的,但我们会慢慢建立$ src变量,具体取决于是否设置了背景或颜色。

答案 1 :(得分:1)

您可以使用WordPress内置的add_query_arg()功能轻松完成此操作。

View Code

答案 2 :(得分:0)

这是一个小函数,可以在给定的参数数组中创建参数:

<?php
// the settings:
$attr = [];
$attr['background'] = "#ededed";
$attr['color'] = "red";
#$attr['otherparam'] = "123456";
$url = 'http://example.org';

// the method
function createParamsString($params) {
    $p = [];
    foreach($params as $key=>$value) { 
       $p[]  = $key."=".urlencode($value);
    }
    return implode("&", $p);
}

// usage:
$paramsString = createParamsString($attr);

$url = !empty($paramsString) ? $url."?".$paramsString : $url;

echo $url;

这种方式是模块化的。您只需向$attr添加条目就可以了。如果您的背景值为urlencode,则#EDEDED非常重要。