Php 如何将多个复选框值保存到数据库并在多维数组中正确显示它们
我在WordPress中的多维数组存在逻辑问题。我试图将多个复选框值放入具有相应键值的多维数组中 案例场景:用户希望在相应的订单状态中添加订单状态,如: 用户希望将订单状态“二”、“三”、“四”添加到订单状态“一”中 并将订单状态“一”、“三”、“五”添加到订单状态“二” 并将订单状态“一”添加到订单状态“四”中 因此,阵列应如下所示:Php 如何将多个复选框值保存到数据库并在多维数组中正确显示它们,php,arrays,wordpress,woocommerce,Php,Arrays,Wordpress,Woocommerce,我在WordPress中的多维数组存在逻辑问题。我试图将多个复选框值放入具有相应键值的多维数组中 案例场景:用户希望在相应的订单状态中添加订单状态,如: 用户希望将订单状态“二”、“三”、“四”添加到订单状态“一”中 并将订单状态“一”、“三”、“五”添加到订单状态“二” 并将订单状态“一”添加到订单状态“四”中 因此,阵列应如下所示: Array ( [one] => Array ( [0] => two [
Array
(
[one] => Array
(
[0] => two
[1] => three
[2] => four
)
[two] => Array
(
[0] => one
[1] => three
[2] => five
)
[three] => Array
(
)
[four] => Array
(
[0] => one
)
[five] => Array
(
)
[six] => Array
(
)
[seven] => Array
(
)
[eight] => Array
(
)
)
到目前为止我掌握的代码
对于修剪订单状态:
$_next_order_status_names = array();
$_next_order_status_name_index = 0;
$_order_statuses = array_values(wc_get_order_statuses());
foreach($_order_statuses as $_order_status)
{
$name = trim($_order_status);
$name = str_replace(' ', '_', $name);
$name = strtolower($name);
array_push($_next_order_status_names, $name);
}
从数据库获取列表并将其放入html:
$next_statuses = $options['next_statuses'];
foreach($_next_order_status_names as $_next_order_status_name){
if(in_array ($_next_order_status_names[$_next_order_status_name_index], $next_statuses[$_next_order_status_name]))
$content .= "<input type='checkbox' name='".esc_html($_next_order_status_names[$_next_order_status_name_index])."' value='".esc_html($_next_order_status_names[$_next_order_status_name_index])."' checked>". esc_html ($_next_order_status_name) . "<br>";
else
$content .= "<input type='checkbox' name='".esc_html($_next_order_status_names[$_next_order_status_name_index])."' value='".esc_html($_next_order_status_names[$_next_order_status_name_index])."'>". esc_html ($_next_order_status_name) ."<br>";
$_next_order_status_name_index++;
}
并尝试将复选框值数组添加到相应的数组:
foreach($_next_order_status_names as $_next_order_status_name)
{
foreach($_next_order_status_names as $_next_order_status_name_ind)
{
if( isset($_POST[$_next_order_status_name]) && !empty($_POST[$_next_order_status_name]) ) array_push($next_statuses[$_next_order_status_name_ind], sanitize_text_field($_POST[$_next_order_status_name]));
}
}
所以我的问题是如何将复选框值转换成相应的键值。现在,它将所有的一阶状态放入所有键中。所有想法都受到赞赏。提前感谢:)
foreach($_next_order_status_names as $_next_order_status_name)
{
foreach($_next_order_status_names as $_next_order_status_name_ind)
{
if( isset($_POST[$_next_order_status_name]) && !empty($_POST[$_next_order_status_name]) ) array_push($next_statuses[$_next_order_status_name_ind], sanitize_text_field($_POST[$_next_order_status_name]));
}
}