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';
}
以 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';
}