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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP根据存在多少变量来更改输出相关的知识,希望对你有一定的参考价值。

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

我要做的是根据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.'

有人能指出我正确的方向吗?这将不胜感激。

答案

试试这个:

$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变量,具体取决于是否设置了背景或颜色。

另一答案

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

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

if ( isset($attr['background']) ) {

    add_query_arg( 'background', $attr['background'], $url );

}

if ( isset($attr['color']) ) {

    add_query_arg( 'color', $attr['color'], $url );

}
另一答案

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

<?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很重要。

以上是关于PHP根据存在多少变量来更改输出的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 保存到文件,如果存在则更改输出

根据所选选项更改存在规则

根据使用 php 和 jquery 的下拉选择更改价格变量

如何更改片段中的主要活动变量

php Yoast SEO规范输出的代码片段

php Yoast SEO规范输出的代码片段