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很好。人们可能认为在两个级别进行检查有点过分,但这是值得的。一如既往,请先阅读手册。该文件明确说明了什么是空数组。并且一如既往,请先阅读手册。