使用 PHP Explode 和 FOREACH - 每次尝试都会出现各种错误

问题描述

我正在通过 $form_data = $_POST['form_data']; 引入一些数据。我需要为每个值遍历这些数据,所以我认为 foreach 可能是我想要的。所以我开始:

vardump($form_data) 并查看: string(125) "Customer_FName=r&Customer_LName=r&Customer_MobileNumber=2&Customer_Email=r%40rco.com&Reservation_Message=&C_Preference_Notes=" 0

酷。所以它作为一个字符串进来。听起来像 $form_data_array=json_decode($form_data);

的工作

(我在 AJAX 中将类型设置为 JSON)但这给了我:“警告:为 foreach() 提供的参数无效....... NULL 0”

代码

    $form_data = $_POST['form_data'];
$form_data_array=json_decode($form_data);
    foreach ($form_data_array as $key => $data){
        $data->Customer_FName;
        $data->Customer_LName;
        $data->Customer_MobileNumber;
        $data->Customer_Email;
        $data->C_Preference_Notes;
    };
    

奇怪,所以对于explode来说可能是更好的工作。 所以:$form_data_array = explode("& ",$form_data); 这给了我“试图获取非对象的属性'Customer_FName'”的错误。 我 `vardump($form_data_array) 并看到它已将其拆分

array(6) { [0]=> string(16) "Customer_FName=r" [1]=> string(16) "Customer_LName=r" [2]=> string(23) "Customer_MobileNumber=2" [3]=> string(24) "Customer_Email=w%402.com" [4]=> string(20) "Reservation_Message=" [5]=> string(19) "C_Preference_Notes=" } 0

但仍然得到“试图获取非对象的属性'...'”

好的,现在我到达某个地方了!我将代码更改为:

$form_data = $_POST['form_data'];
$form_data_array = explode("&",$form_data);
foreach ($form_data_array as $key => $data){
    $data[Customer_FName];
    $data[Customer_LName];
    $data[Customer_MobileNumber];
    $data[Customer_Email];
    $data[C_Preference_Notes];
};
        

但是我收到每个“for each”的错误 - “警告:非法字符串偏移量'Customer_FName' in ... on line ...”

警告:使用未定义的常量 Customer_LName - 假定为 'Customer_LName'(这将在 PHP 的未来版本中引发错误) in ... 在线 ..."

回到爆炸的解码?

现在我没有想法了。我在这里错过了什么?

AJAX

        jQuery(document).on('submit','#ajax-add-to',function(e){
  e.preventDefault();
            var form = jQuery('#ajax-add-to');
            var form_data = form.serialize();
                        jQuery.ajax({
                        data: {action:'myaction',form_data:form_data},type: 'post',url: my_ajax.ajax_url,dataType: 'JSON',success: function(data){
                                      if(data.status == 'error'){
        console.log("[API] ERROR: "+data.message);
      }
      if(data.status == 'success'){
        console.log("[API] SUCCESS: "+data.message);
      }
                            }

}); 
    return false;
        
    });

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)