CodeIgniter $ this-> input-> post()数组

时间:2012-12-13 22:14:52

标签: php codeigniter

我非常好奇为什么当我print_r($ this-> input-> post())时,它打印一个数组然后在它之后有1。 这是它打印的内容:

Array ( [username] => lilmousiee [birthdate] => 1992-04-26 [gender] => 1 [password] => 66lah66lab [password2] => 66lah66lab [pin] => 2323 [pin2] => 2323 [email] => mouseywings@live.com [email2] => mouseywings@live.com [region] => 1 [dtype] => air [dname] => Mattyco [dgender] => 1 [terms] => [recaptcha_challenge_field] => 03AHJ_VutHNI6hK3M_trpE-n4Qr9V5wWSH10p8hmQjrYVLeWf65ylIDva5XdH78uGED5KCsMx8tp3FHZ6p1xTllyrdSP7nEbnSILQ9CDqrxoD2pit5o9T9Cowy06_O6XLLM22fvH_5ICqoYrmI-o-P8dGCal0fNKuSohgvFU03FmgbhuYTDjJ_xUA [recaptcha_response_field] => asdfsadf [submit] => Register [search] => [type] => usersitems ) 1

为什么在阵列后打印“1”?我没有一个偶数类型...并且在注册按钮之后没有输入字段值为1 ...“搜索”和“类型”键究竟是什么?

我的HTML的最后一部分:

    <legend>Terms of Use</legend>
    <div id="terms">
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris vitae turpis ut sem tristique luctus. Sed tincidunt consequat tristique. Mauris laoreet vestibulum aliquam. Ut enim tortor, aliquet at faucibus sed, venenatis eget tellus. Praesent velit nisl, bibendum a dignissim nec, hendrerit non lacus. Fusce dapibus pharetra molestie. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris vitae turpis ut sem tristique luctus. Sed tincidunt consequat tristique. Mauris laoreet vestibulum aliquam. Ut enim tortor, aliquet at faucibus sed, venenatis eget tellus. Praesent velit nisl, bibendum a dignissim nec, hendrerit non lacus. Fusce dapibus pharetra molestie. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris vitae turpis ut sem tristique luctus. Sed tincidunt consequat tristique. Mauris laoreet vestibulum aliquam. Ut enim tortor, aliquet at faucibus sed, venenatis eget tellus. Praesent velit nisl, bibendum a dignissim nec, hendrerit non lacus. Fusce dapibus pharetra molestie. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris vitae turpis ut sem tristique luctus. Sed tincidunt consequat tristique. Mauris laoreet vestibulum aliquam. Ut enim tortor, aliquet at faucibus sed, venenatis eget tellus. Praesent velit nisl, bibendum a dignissim nec, hendrerit non lacus. Fusce dapibus pharetra molestie. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
    </div>
    <?php echo form_checkbox(array('name' => 'terms')); ?> Accept Terms of Use
    <div class="row clearfix">
        <?php
          echo recaptcha_get_html($public_key);
        ?>
    </div>
</fieldset>
<?php echo print_r($array); ?>

<div class="row clearfix"><?php echo form_submit('submit', 'Register'); ?></div>
<? echo form_close(); ?>

我在将$ this-&gt; input-&gt; post()数组传递给验证函数时遇到了麻烦。这是我的库文件夹中的MY_Form_validation.php:

class MY_Form_validation extends CI_Form_validation {
    private $post;

    public function __construct($params = array()) {
        foreach($params as $param) {
        parent::__construct($param['config']);
$this->post = $param['post'];
        }

    }
}

是否有理由将“1”打印为$ this-&gt; post值...当它应该保存数组的键和值时? 这就是我传递参数的方式:

$this->load->library('MY_Form_validation', array('config' => '', 'post' => $this->input->post()));

但是当我把print_r($ this-&gt; post)时,它只打印“1”..

2 个答案:

答案 0 :(得分:1)

这是因为$this->input->post()是一个对象而不是字符串或数组。它打印出1,因为对象存在并具有属性。如果它不存在或为空,则会打印0.它只是布尔返回值的数字表示。

正如有人提到的,如果你var_dump($this->input->post()),你将不会出现“1”字符。

要获取字段的值,请在括号中指定字段名:

$recaptcha_data = $this->input->post('recaptcha_challenge_field');

另一个澄清;你可以像这样使用$this->input->post()的返回值:

if ($this->input->post()) 
{
    // do stuff if post array exists
}

答案 1 :(得分:1)

这是因为你使用了

<?php echo print_r($array); ?>

print_r()将打印数组,它将返回1。 打印阵列后,Echo将显示此1  你可以只使用

<?php print_r($array); ?>