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根据存在多少变量来更改输出的主要内容,如果未能解决你的问题,请参考以下文章