PHP меняет вывод в зависимости от того, сколько существует переменных - PullRequest
0 голосов
/ 01 мая 2018

Извинения, если это простой вопрос и / или бессмысленный.

Я пытаюсь изменить вывод строки на основе двух простых переменных.

Это исходная переменная;

$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 голосов
/ 01 мая 2018

Вы можете сделать это легко, используя функцию add_query_arg(), встроенную в WordPress.

$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 );

}
0 голосов
/ 01 мая 2018

Вот небольшая функция, которая создает параметры из заданного массива параметров:

<?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 для фона.

0 голосов
/ 01 мая 2018

Попробуйте это:

$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 в зависимости от того, установлен ли фон или цвет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...