Очень простая задача

Я начинаю изучать PHP. Но не могу решить одну проблему. Помогите пожалуйста

$woopayment = LP()->settings()->get('woo-payment');
if( $woopayment['enable'] == 'yes' && $woopayment['purchase_button'] !== 'cart') {
    return;
}




if ( $woopayment['purchase_button'] == 'single' ) {
    ?>
    <input type="hidden" name="single-purchase" value="yes"/>
    <?php
} else if ( $woopayment['purchase_button'] == 'cart' ) {
    ?>
    <button class="button button-add-to-cart" data-action="add-to-cart"
        data-block-content="yes"><?php _e( 'Add to cart', 'learnpress-woo-payment' ); ?></button>
    <?php
}
?>

Данный код постоянно возвращает: Notice: Undefined index: purchase_button

введите сюда описание изображения


Ответы (3 шт):

Автор решения: Gaziz

Проблема решился с помощью

array_key_exists()

public function before_purchase_button() {
        $woopayment = LP()->settings()->get('woo-payment');
        if( $woopayment['enable'] == 'yes' && array_key_exists('purchase_button', $woopayment) !== 'cart' ) {
            return;
        }
        
        echo '<div class="hide-if-js">';
    }
→ Ссылка
Автор решения: nurassyl
if( $woopayment['enable'] == 'yes' && array_key_exists('purchase_button', $woopayment) !== 'cart' ) {
    return;
}

Использовать функцию array_key_exists не эффективен, это потребляет больше энергии CPU. Лучше использовать это:

error_reporting(E_ALL & ~E_NOTICE);

поставь этот код в начале скрипта после <?php

→ Ссылка
Автор решения: Node_pro
<?php
$woopayment = LP()->settings()->get('woo-payment');
$purchase_button = $woopayment['purchase_button'] ?? NULL;

if( $woopayment['enable'] == 'yes' &&  $purchase_button !== 'cart') {
    return;
}


if ( $purchase_button=== 'single'):

   <input type="hidden" name="single-purchase" value="yes"/>
<?php else if ( $purchase_button === 'cart' ):?>

   <button class="button button-add-to-cart" data-action="add-to-cart"
            data-block-content="yes"><?php _e( 'Add to cart', 'learnpress-woo-payment' ); ?></button>

<?php endif; ?>

Если у Вас PHP 7+, вы можете использовать ?? или же сделать проверку через isset. Также рекомендую Вам использовать строгое сравнение

→ Ссылка