为什么$ _POST将字符串转换为布尔值

时间:2015-11-24 18:22:42

标签: php string forms post boolean

我有一个非常奇怪的问题,我想要第二双眼睛。我正在尝试一些应该是一个非常基本的功能。使用POST发送表单并检索值。

<form action="index.php?a=2" method="post">
                    <input type="hidden" name="pk" value="'. $_GET["c"] .'">
                    <table id="_person_table">
                <tr>
                    <td id = "_person_create_table"> FIRST NAME: </td>
                    <td id = "_table_nr_plate"> <input type="text" name="afn" id="_person_create_input" value="'.$record[0].'"> </td>
                </tr>                   
                <tr>
                    <td id = "_person_create_table"> LAST NAME: </td>
                    <td id = "_table_nr_plate">  <input type="text" name="overwrite_lastname" id="_person_create_input" value="'.$record[1].'"> </td>

                </tr>   
                <tr>
                    <td id = "_person_create_table"> PHONE NUMBER: </td>
                    <td id = "_table_nr_plate"> <input type="text" name="overwrite_phone_number" id="_person_create_input" value="'.$record[2].'"> </td>
                </tr>   
                <tr>
                    <td id = "_person_create_table"> E MAIL: </td>
                    <td id = "_table_nr_plate"> <input type="text" name="aem" id="_person_create_input" value="'.$record[3].'"> </td>
                </tr>
                <tr>
                    <td id = "_person_create_table"> STREET ADRESS: </td>
                    <td id = "_table_nr_plate"> <input type="text" name="asa" id="_person_create_input" value="'.$record[4].'"> </td>
                </tr>
                <tr>
                    <td id = "_person_create_table"> FULL HOUSE NUMBER: </td>
                    <td id = "_table_nr_plate"> <input type="text" name="ahn" id="_person_create_input" value="'.$record[5].'"> </td>
                </tr>
                <tr>
                    <td id = "_person_create_table"> POSTAL CODE:</td>
                    <td id = "_table_nr_plate"> <input type="text" name="apc" id="_person_create_input" value="'.$record[6].'"> </td>
                </tr>
                </table>
                    <center> <input type="image" src="img/alterUser.png" name="submit" alt="Submit" style="width:100px;height:100px; padding-top:1%;"> </center>
                </form>

上面是表单,当我将var_dump每个值分开时,它给出了字符串表示。但是,它在index.php?a = 2上发送和检索它会产生以下转储:

array(10) { 
   ["pk"]=> string(8) "10000007"
   ["afn"]=> string(5) "Lisa" 
   ["overwrite_lastname"]=> bool(true) 
   ["overwrite_phone_number"]=> bool(true)
   ["aem"]=> string(26) "lisa@example.com" 
   ["asa"]=> string(19) "not applicable" 
   ["ahn"]=> string(1) "0" 
   ["apc"]=> string(6)

为什么POST中的10个值中有8个符合预期,但是$_POST["overwrite_lastname"]$_POST["overwrite_phone_number"]是否转换为布尔值?我没有看到它。

更新#1:var_dump($ record);

  

array(8){[0] =&gt; string(4)“Lisa”[1] =&gt; string(8)“Dijkstra”[2] =&gt;   string(10)“0643482515”[3] =&gt; string(17)“lisa@example.com”   [4] =&GT; string(19)“not applicable”[5] =&gt; string(1)“0”[6] =&gt;   string(6)“9743LD”[7] =&gt; string(19)“要实现”}

更新#2:经过一夜安眠后,我找到了原因。 我正在检查POST值是否设置为:

  

if($ _ POST [“afn”]!= null&amp;&amp; $ _POST [“overwrite_lastname”] =!null&amp;&amp;   $ _POST [“overwrite_phone_number”] =! null&amp;&amp; $ _POST [“aem”]!= null&amp;&amp;   $ _POST [“asa”]!= null&amp;&amp; $ _POST [“ahn”]!= null&amp;&amp; $ _POST [“apc”]!= null)

可以看出我切换了!= =!对于作为布尔值返回的值。至少我了解到了!可以用来引用真实的。

2 个答案:

答案 0 :(得分:0)

你错误地使用PHP,试试这个

<form action="index.php?a=2" method="post">
                    <input type="hidden" name="pk" value="<?php echo $_GET["c"]; ?>">
                    <table id="_person_table">
                <tr>
                    <td id = "_person_create_table"> FIRST NAME: </td>
                    <td id = "_table_nr_plate"> <input type="text" name="afn" id="_person_create_input" value="<?php echo $_GET["c"]; ?>"> </td>
                </tr>                   
                <tr>
                    <td id = "_person_create_table"> LAST NAME: </td>
                    <td id = "_table_nr_plate">  <input type="text" name="overwrite_lastname" id="_person_create_input" value="<?php echo $record[0]; ?>"> </td>

                </tr>   
                <tr>
                    <td id = "_person_create_table"> PHONE NUMBER: </td>
                    <td id = "_table_nr_plate"> <input type="text" name="overwrite_phone_number" id="_person_create_input" value="<?php echo $record[1]; ?>"> </td>
                </tr>   
                <tr>
                    <td id = "_person_create_table"> E MAIL: </td>
                    <td id = "_table_nr_plate"> <input type="text" name="aem" id="_person_create_input" value="<?php echo $record[2]; ?>"> </td>
                </tr>
                <tr>
                    <td id = "_person_create_table"> STREET ADRESS: </td>
                    <td id = "_table_nr_plate"> <input type="text" name="asa" id="_person_create_input" value="<?php echo $record[3]; ?>"> </td>
                </tr>
                <tr>
                    <td id = "_person_create_table"> FULL HOUSE NUMBER: </td>
                    <td id = "_table_nr_plate"> <input type="text" name="ahn" id="_person_create_input" value="<?php echo $record[4]; ?>"> </td>
                </tr>
                <tr>
                    <td id = "_person_create_table"> POSTAL CODE:</td>
                    <td id = "_table_nr_plate"> <input type="text" name="apc" id="_person_create_input" value="<?php echo $record[5]; ?>"> </td>
                </tr>
                </table>
                    <center> <input type="image" src="img/alterUser.png" name="submit" alt="Submit" style="width:100px;height:100px; padding-top:1%;"> </center>
                </form>

答案 1 :(得分:0)

更新#2:经过一夜安眠后,我找到了原因。我正在检查POST值是否设置为:

  

if($ _ POST [“afn”]!= null&amp;&amp; $ _POST [“overwrite_lastname”] =!null&amp;&amp;   $ _POST [“overwrite_phone_number”] =! null&amp;&amp; $ _POST [“aem”]!= null&amp;&amp;   $ _POST [“asa”]!= null&amp;&amp; $ _POST [“ahn”]!= null&amp;&amp; $ _POST [“apc”]!= null)   可以看出我切换了!=到=!对于返回的值   布尔值。至少我了解到了!可以用来引用真实的。