这段PHP代码有什么问题?Array key自动重置


What's wrong with this PHP code?? Array key resets automatically

我正面临这个奇怪的错误,我从POST得到'email'的值。我使用var_dump()来确保我得到了这个值下面是var_dump的输出:

string(255) "array(7) { ["no"]=> bool(false) ["email"]=> string(21) "munir.ehmad@gmail.com" }

但是在下面的代码中,如果我取消对响应行的注释,则执行if条件(即如果表达式返回true),这不应该发生。如果我注释$this->响应部分,if条件不会执行,else部分会…: S

代码如下,我已经浪费了几个小时,仍然不知道现在发生了什么。请帮助!

p。S:我要么想要用户的电子邮件,要么不想要,要么两者都要,但他至少应该给我其中一个。


代码:

$user['no']     = $this->post('no');
$user['email']  = $this->post('email');
var_dump($user);
if ( !$user['no'] && !$user['email'] )
{
  echo 'Error occured';
  //$this->response( array('msg'=>'Mobile No or Email must be provided'), 400);
  return;
}
else
  echo 'not error';
exit();

编辑:任何雇佣兵谁认为这不是发生在IRL现在被邀请查看我的桌面在skype上,而我做他的投标来修复错误。(id: munir.ehmad)

php数组将var_dump为

array(7) { 
       ["no"]=> bool(false) 
       ["email"]=> string(21) "munir.ehmad@gmail.com" 
           }

你的"array" var_dumps作为一个字符串与该内容。如果这就是var_dump的确切输出,那么看起来您得到了一个字符串。那个变量一定发生了什么事。

我相信,如果您尝试将字符串用作数组,您将得到意想不到的结果,大概如上所述。

像这样开始调试:

制作一个新的脚本,除了让你烦恼的部分什么都没有。

$user = array();
$user['no']     = false;
$user['email']  = "someemail@email.com";
var_dump($user);
if ( !$user['no'] && !$user['email'] )
{
  echo 'Error occured';
}else{
  echo 'not error';
}

运行此脚本。验证它是否执行了您所期望的操作。如果没有,要么更改代码,要么更改期望。尝试使用POST来运行它,将POST值直接添加到$user数组中(例如使用$user = $_POST;)。再次运行脚本。核实。下次使用$this->post变量。等。

继续,直到你有一个脚本的行为方式你无法解释。回来把那个脚本贴出来

这与您注释的行没有任何关系。它不能。(除非它导致新的请求,例如通过header(Location: ...))

让我们看看您的var_dump。$user['no']false。所以!$user['no']true。但是,$user['email']munir.ehmad@gmail.com, !$user['email']false。您确定代码中有&& (and)而不是|| (or)吗?

(对我来说,||实际上更有意义)

尝试使用isset或空函数。

if ( !empty($user['no']) && !empty($user['email']) ) {
   ....
   ....
}

感谢所有的否定,问题是在我使用的REST客户端。

使用相同的参数从客户端手动CURL POST,它可以完美地工作