2

我的问题是我使用特殊字符&作为键,这似乎不起作用

我的数组是这样的

$legalforms = array(
    'GmbH & Co.KG' => array(
            'namesToSubmit' =>array(
                'companyName'=>'required',
                'location'=>'required', 
                'phone'=>null,
                'fax'=>null,
                'web'=>null,
                'registryCourt'=>'required',
                'registryNumber'=>'required',
                'companyNameAssociate'=>'required',
                'locationAssociate'=>'required',
                'registryCourtAssociate'=>'required',
                'registryNumberAssociate'=>'requuired',
                'ceo'=>'required'
            ),
       )
)

当我想使用 namesToSubmit 时,我收到一个错误,即 nameToSubmit 的属性为空,如果我从中删除特殊字符&,它可以工作..那么我怎样才能让它与&一起工作?

编辑:

$("#sendLegalForm").click(function () { 
         selection = $('#selection').val();
         $.ajax({
             type:'GET',
             url:'http://192.168.10.24/php/sig.php?selectedLegalform='+ selection,
             dataType:'json',
             success: function (data){  

                 $("#legalform").hide();
                 $("#fields").show();
                 var fieldnames =[];
                 for(property in data.namesToSubmit){
                    fieldnames.push(property);
                 }
                 var fields=[];
                 for(var i=0; i<data.textfieldHeaders.length; i++){               
                 fields.push(data.textfieldHeaders[i],'<br>','<input name="',fieldnames[i],'" type="text"                                                       ',data.namesToSubmit[fieldnames[i]] == "required"?"required":"",'>','<br/>');        
                 }                

                 fields.push("<br>", 'Pflichtfelder (*)');
                 $("#fieldsForm").prepend(fields.join(''));              
             },
             error: function(jqXHR,textStatus,errorThrown){
                console.log(jqXHR);
                console.log(textStatus);
                console.log(errorThrown);
             }
         });
     });

我在这一行得到了错误

for(property in data.namesToSubmit){

试过md5,没用,谢谢大家的帮助

4

3 回答 3

3

来自 PHP手册

键可以是整数或字符串。该值可以是任何类型。

此外,还会发生以下关键转换:

  • 包含有效整数的字符串将被转换为整数类型。例如,键“8”实际上将存储在 8 下。另一方面,“08”不会被强制转换,因为它不是有效的十进制整数。
  • 浮点数也被转换为整数,这意味着小数部分将被截断。例如,密钥 8.7 实际上将存储在 8 之下。
  • 布尔值也被转换为整数,即键 true 将实际存储在 1 下,而键 false 将存储在 0 下。
  • Null 将被强制转换为空字符串,即键 null 将实际存储在 "" 下。
  • 数组和对象不能用作键。这样做会导致警告:非法偏移类型。

因此,&您可以用一个允许的字符替换它,而不是在您的数组键中使用str_replace(),并且一旦声明了数组,您就可以用 & 替换它。

一种替代方法是使用md5(),如此处所建议

md5('GmbH & Co.KG' => array( ...

希望这可以帮助!

于 2013-07-25T13:02:30.790 回答
2

将请求方法更改为POST

$.ajax({
    type:'POST',
    url: 'http://192.168.10.24/php/sig.php',
    data: {selectedLegalform: selection},
    ...

在 PHP 中:

$data = $_POST['selectedLegalform'];

如果您GmbH & Co.KG通过GET它发送字符串变为GmbH%20%26%20Co%2EKG. 那应该是问题所在。

于 2013-07-25T14:09:32.587 回答
1

您可以将数组中的“&”替换为“-and-”,并在使用数组时再次替换。希望它会有所帮助。我通常会这样做。

替换,使用str_replace()

于 2013-07-25T13:02:15.693 回答