PHP 在数组变量中添加条件 (WooCommerce API)

PHP add conditions within an array variable (WooCommerce API)

以 WooCommerce API 文档中的以下代码为例。我想要做的是在数组中添加一些 if 条件。例如,根据某些 if 条件,我希望 payment_details 数组成为 $data 的一部分。这可能吗?怎么样?

<?php
$data = [
    'order' => [
        'payment_details' => [
            'method_id' => 'bacs',
            'method_title' => 'Direct Bank Transfer',
            'paid' => true
        ],
        'billing_address' => [
            'first_name' => 'John',
            'last_name' => 'Doe',
            'address_1' => '969 Market',
            'address_2' => '',
            'city' => 'San Francisco',
            'state' => 'CA',
            'postcode' => '94103',
            'country' => 'US',
            'email' => 'john.doe@example.com',
            'phone' => '(555) 555-5555'
        ],
        'shipping_address' => [
            'first_name' => 'John',
            'last_name' => 'Doe',
            'address_1' => '969 Market',
            'address_2' => '',
            'city' => 'San Francisco',
            'state' => 'CA',
            'postcode' => '94103',
            'country' => 'US'
        ],
        'customer_id' => 2,
        'line_items' => [
            [
                'product_id' => 546,
                'quantity' => 2
            ],
            [
                'product_id' => 613,
                'quantity' => 1,
                'variations' => [
                    'pa_color' => 'Black'
                ]
            ]
        ],
        'shipping_lines' => [
            [
                'method_id' => 'flat_rate',
                'method_title' => 'Flat Rate',
                'total' => 10
            ]
        ]
    ]
];

print_r($woocommerce->post('orders', $data));
?>

关键是,我不想再次定义整个数组,而是想在此处放置一个 if 条件:

'order' => [

if ($payment = 'xyz') {

'payment_details' => [
    'method_id' => 'bacs',
    'method_title' => 'Direct Bank Transfer',
    'paid' => true
],

} 否则{

'payment_details' => [
    'method_id' => 'monopoly',
    'method_title' => 'Monopoly',
    'paid' => true
],

}

是否可以使用点等号连接数组? .= 谢谢。

"payment_details" 已经是 $data 的一部分。

要使用它:

$paymentDetails = $data['order']['payment_details'];

然后你可以显示它:

echo $paymentDetails['method_title'];

如果要使用if条件:

if ($paymentDetails['method_title'] === 'Monopoly money') {
    echo 'That will not work';
}

要更改付款详细信息:

$data['order']['payment_details']['method_title'] = 'Changed';

$data['order']['payment_details'] = ['method_title' => 'something', 'method_id' => 5, 'paid' => false];

您可以预先定义payment_details并在$data数组中使用它。

if ($payment = 'xyz') {
    $payment_details = array (  'method_id'    => 'bacs',
                                'method_title' => 'Direct Bank Transfer',
                                'paid'         => true);
}else{
    $payment_details = array (  'method_id'    => 'monopoly',
                                'method_title' => 'Monopoly',
                                'paid'         => true);
}

$data = array (
    'order' => array(
        'payment_details' => $payment_details,
        ......
        ......
    )
);

print_r($woocommerce->post('orders', $data));

回答我自己的问题。这就是我要找的。

$orderData = [];
            if ($payment == 'Monopoly') {
                $orderData['order']['payment_details'] = [];
                $orderData['order']['payment_details']['method_id'] = 'Monopoly';
                $orderData['order']['payment_details']['method_title'] = 'Monopoly';
                $orderData['order']['payment_details']['paid'] = true;
                $orderData['order']['status'] = 'completed';
            }
            else {
                $orderData['order']['status'] = 'pending';
            }