Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 空函数应该返回true时返回false codeigniter_Php_Arrays_Codeigniter_Is Empty - Fatal编程技术网

Php 空函数应该返回true时返回false codeigniter

Php 空函数应该返回true时返回false codeigniter,php,arrays,codeigniter,is-empty,Php,Arrays,Codeigniter,Is Empty,我正在建立一个送货网站 如果您有一个帐户,对于交付详细信息,您有两个选项: 使用账户交付详细信息(您在注册时填写) 使用不同的交付详细信息(在购物车中完成) 我正在进行以下验证: 用户是否已登录?如果是,请验证他是否输入了一些新的交付详细信息(我正在使用POST获取值,并用它们制作一个数组-$data\u pos)。如果他输入,则空($data\u pos)将为false,使用他的姓名(来自帐户)和总价制作一个新数组,并将订单插入数据库 如果用户未登录,则需要完成详细信息才能继续 问题是,即使$

我正在建立一个送货网站

如果您有一个帐户,对于交付详细信息,您有两个选项:

  • 使用账户交付详细信息(您在注册时填写)
  • 使用不同的交付详细信息(在购物车中完成)
  • 我正在进行以下验证:

    用户是否已登录?如果是,请验证他是否输入了一些新的交付详细信息(我正在使用
    POST
    获取值,并用它们制作一个数组-
    $data\u pos
    )。如果他输入,则
    空($data\u pos)
    为false
    ,使用他的姓名(来自帐户)和总价制作一个新数组,并将订单插入数据库

    如果用户未登录,则需要完成详细信息才能继续

    问题是,即使
    $data\u pos
    (他可以完成以覆盖帐户交付详细信息的交付详细信息)是否为空,功能
    empty
    始终处于
    false
    状态,因此即使他什么都不输入,也会说他输入了什么

    注意:这是我为
    打印\r
    数组和骰子而做的一个函数。只是为了调试

    echo '<pre>';
          print_r($data);
    die();
    
    echo';
    
    if(count(array_filter($data_pos)) == 3){
    
    $data_pos = array(
        'telephone' => $this->input->post('phone_pos'),
        'address' => $this->input->post('address_pos'),
        'details' => $this->input->post('details'),
    );
    if(empty($data_pos) == false){
    
    打印(数据); 模具();
    型号:

    if(array_filter($data_pos)){
        // true
    }else{
        // false
    }
    
    if($this->session->userdata('logged_in')){
    $data\u pos=数组(
    “电话”=>$this->input->post('phone_pos'),
    'address'=>this->input->post('address_pos'),
    'details'=>this->input->post('details'),
    );
    if(空($data_pos)==false){
    $data=数组(
    “客户端名称”=>$this->session->userdata('email'),
    “电话”=>$this->input->post('phone_pos'),
    'address'=>this->input->post('address_pos'),
    'details'=>this->input->post('details'),
    '价格'=>$this->cart->total(),
    );
    回声';
    
    if(count(array_filter($data_pos)) == 3){
    
    $data_pos = array(
        'telephone' => $this->input->post('phone_pos'),
        'address' => $this->input->post('address_pos'),
        'details' => $this->input->post('details'),
    );
    if(empty($data_pos) == false){
    
    打印(数据位置); echo“第二个数组不为空”;
    if(count(array_filter($data_pos)) == 3){
    
    $data_pos = array(
        'telephone' => $this->input->post('phone_pos'),
        'address' => $this->input->post('address_pos'),
        'details' => $this->input->post('details'),
    );
    if(empty($data_pos) == false){
    
    死(“\n”。“死在”; }否则{ $data=数组( “客户端名称”=>$this->session->userdata('email'), “电话”=>$this->session->userdata(“电话”), “地址”=>$this->session->userdata(“地址”), 'details'=>this->input->post('details'), '价格'=>$this->cart->total(), ); 回声';
    if(count(array_filter($data_pos)) == 3){
    
    $data_pos = array(
        'telephone' => $this->input->post('phone_pos'),
        'address' => $this->input->post('address_pos'),
        'details' => $this->input->post('details'),
    );
    if(empty($data_pos) == false){
    
    打印(数据); echo“我从帐户中获取信息,因为第二个数组是空的”;
    if(count(array_filter($data_pos)) == 3){
    
    $data_pos = array(
        'telephone' => $this->input->post('phone_pos'),
        'address' => $this->input->post('address_pos'),
        'details' => $this->input->post('details'),
    );
    if(empty($data_pos) == false){
    
    死(“\n”。“死在”; } }
    使用
    array\u filter
    检查是否为空值

    替换您的代码

    if(空($data_pos)==false){

    如果要检查3个字段不应为空,请按如下方式添加值

            $data_pos = array(
                'telephone' => $this->input->post('phone_pos'),
                'address' => $this->input->post('address_pos'),
                'details' => $this->input->post('details'),
            );
    

    使用
    array\u filter
    检查是否为空值

    替换您的代码

    if(空($data_pos)==false){

    如果要检查3个字段不应为空,请按如下方式添加值

            $data_pos = array(
                'telephone' => $this->input->post('phone_pos'),
                'address' => $this->input->post('address_pos'),
                'details' => $this->input->post('details'),
            );
    

    问题是,您正在使用他们输入的详细信息填充数组,即使他们没有输入任何数据。密钥将位于具有空值的数组中,因此数组中会有内容

    $data_pos = array(
        'telephone' => $this->input->post('phone_pos'),
        'address' => $this->input->post('address_pos'),
        'details' => $this->input->post('details')
    );
    
    一种方法是过滤输入以删除空白值


    问题是,您正在使用他们输入的详细信息填充数组,即使他们没有输入任何数据。密钥将位于具有空值的数组中,因此数组中会有内容

    $data_pos = array(
        'telephone' => $this->input->post('phone_pos'),
        'address' => $this->input->post('address_pos'),
        'details' => $this->input->post('details')
    );
    
    一种方法是过滤输入以删除空白值


    这是因为如果您只声明一个数组,其中包含前面几行中定义的键,那么它永远不会为空


    即使输入为空,此数组也不是空的。您只需创建键电话、地址和详细信息,这样…就不是空的。

    这是因为如果您只声明一个包含前几行中定义的键的数组,它永远不会是空的


    即使输入为空,此数组也不是空的。您只需创建键电话、地址和详细信息,因此…不是空的。

    您面临此问题,因为您在检查empty()之前初始化了数组。


    您正面临此问题,因为您在检查empty()之前初始化了数组


    我明白了…我不知道array_filter。我猜是新手犯的错误…谢谢!我会接受它作为一个答案,因为我可以一个更常见的方法是检查每个字段,看看它是否有值,这意味着你也可以报告错误,如“请输入名称”。你也可以使用HTML强制该字段,因此表单不会提交ted,直到所有细节都完成。一个次要的点-客户端验证不应该被用来代替服务器端验证。它应该和服务器端验证一起使用。@fubar很好的点。人们可能认为在两个级别上检查都太过分了,但这是值得的。我明白了…我不知道array_filter。我猜是新手的错误…谢谢!我会接受它作为答案,因为我可以一个更常见的方法是检查每个字段,看看它是否有值,这意味着您也可以报告错误,如“请输入名称”。您还可以使用HTML强制该字段,因此在所有详细信息完成之前不会提交表单。一个次要问题-客户端验证不能用它来代替服务器端验证。它应该和服务器端验证一起使用。@fubar很好。人们可能认为在两个级别进行检查有点过分,但这是值得的。一如既往,请先阅读手册。该文件明确说明了什么是空数组。并且一如既往,请先阅读手册。