Вывод изменений PHP в зависимости от количества существующих переменных

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

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

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

$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.'

Может кто-нибудь указать мне в правильном направлении, пожалуйста? Буду очень признателен.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
42
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

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

Вы можете легко сделать это, используя функцию 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 );

}

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

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

Другие вопросы по теме