Приносим извинения, если это простой вопрос и / или это бессмысленно.
Я пытаюсь изменить вывод строки на основе двух простых переменных.
Это исходная переменная;
$src = 'http://example.org';
И у меня есть следующие переменные option, которые извлекают данные из шорткода 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 в зависимости от того, установлен ли фон или цвет.
Вот небольшая функция, которая создает параметры из заданного массива параметров в том виде, в котором они есть у вас:
<?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
для фона.