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'
            ),
       )
)

そして、nameToSubmit を使用したい場合、nameToSubmit のプロパティが null であるというエラーが表示されます。特殊文字&を削除すると、動作します

編集:

$("#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" は有効な 10 進整数ではないため、キャストされません。
  • 浮動小数点も整数にキャストされます。これは、小数部分が切り捨てられることを意味します。たとえば、キー 8.7 は実際には 8 の下に格納されます。
  • bool も整数にキャストされます。つまり、キー true は実際には 1 の下に格納され、キー false は 0 の下に格納されます。
  • Null は空の文字列にキャストされます。つまり、キー null は実際には "" の下に格納されます。
  • 配列とオブジェクトはキーとして使用できません。これを行うと、次の警告が表示されます: Illegal offset type.

そのため、&配列キーで を使用str_replace()する代わりに、 を使用して許可された文字に置き換えることができます。また、配列が宣言されたら、それを & に置き換えることができます。

ここでmd5()提案されているように、代わりに を使用することもできます。

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

お役に立てれば!

于 2013-07-25T13:02:30.790 に答える
1

配列内の「&」を「-and-」に置き換え、配列を使用する場合は元に戻すことができます。それが役立つことを願っています。私は通常それをします。

置換用、使用str_replace()

于 2013-07-25T13:02:15.693 に答える