【问题标题】:Array to string conversion object数组到字符串的转换对象
【发布时间】:2018-04-16 21:44:55
【问题描述】:

在 woocommerce 中,我试图从高级自定义字段 (ACF) 的多维数组中获取数据,以填充 woocommerce_form_field() 选择字段选项。

如果我print_r的数据来自:

$pickup = get_field_object('pick_up', 'pick_up_list')['value'];

我有这个:

 Array
(
    [0] => Array
        (
            [name] => Hotel Cla
            [price] => 0
        )

    [1] => Array
        (
            [name] => Ritz Carlon
            [price] => 7
        )

)

然后我在使用这个数组时收到错误Array to string conversion in

woocommerce_form_field( 'pick_up_list', array(
     'type'          => 'select',
     'class'         => array('form-row-wide'),
     'label'         => __('Pick Up'),
     'options'       => $pickup
 ));

我想要的是能够将$pickup 数组添加为选择字段。有什么帮助吗?

【问题讨论】:

标签: php arrays wordpress multidimensional-array woocommerce


【解决方案1】:

也可以在一个简单的FOR 循环中完成,同时将'name''price' 值保持为<option> 提交值:

$pickup = get_field_object('pick_up', 'pick_up_list')['value'];

$options = array();

for( $i = 0; $i < count($pickup); $i++ ){
    $options[$pickup[$i]['name'].'_'.$pickup[$i]['price']] = $pickup[$i]['name'];
}

woocommerce_form_field( 'pick_up_list', array(
     'type'          => 'select',
     'class'         => array('form-row-wide'),
     'label'         => __('Pick Up'),
     'options'       => $options
));

然后一旦提交数据,您将通过这种方式同时获得'name''price'

if( isset($_POST['pick_up_list']) ){
    $pick_up_list = sanitize_text_field($_POST['pick_up_list']);
    $pick_up_list = explode('_', $pick_up_list); // Separate the merged data

    $name  = $pick_up_list[0]; // The hotel name
    $price = $pick_up_list[1]; // The hotel price
}

【讨论】:

  • 如何添加$cart_item['pick_up_list'] = explode('_', $pick_up_list[0]);..显示错误数组。
【解决方案2】:

options 应该是关联数组 key => 值,试试这个:

$options = array();
foreach($pickup as $index => $values) {
    $options[$index] = $values['name'];
}

然后,调用函数:

woocommerce_form_field( 'pick_up_list', array(
   'type'          => 'select',
   'class'         => array('form-row-wide'),
   'label'         => __('Pick Up'),
   'options'       => $options
));

【讨论】:

  • 但选项中没有采取 [价格] :/
猜你喜欢
  • 2014-09-17
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
相关资源
最近更新 更多