【问题标题】:array_key_exsists not working as expected PHParray_key_exsists 没有按预期工作 PHP
【发布时间】:2014-12-15 09:21:03
【问题描述】:

嗨,我在 php 中使用array_key_exists,这是我的代码

$action_array = array(
    'add_post_ajax'=>'posts'
);


if ($_SERVER['REQUEST_METHOD'] === 'POST') 
{ 
     echo $_POST['action'];
    if(array_key_exists($_POST['action'],$action_array))
    {
        $class = $action_array[$_POST['action']];
    }
    else 
    {
        echo "wrong data";
    }
}

echo $_POST['action']; 显示 add_post_ajax ,然后打印 wrong data

奇怪,请帮助我,我在这里做错了什么

更新

我也尝试过修剪

if(array_key_exists(trim($_POST['action']),$action_array))

还是一样的结果:/

这是我的 ajax 请求

xmlhttp.send("action='add_post_ajax' &name=" + name + "&email=" + email + "&post=" + post);

echo $_POST['action'] 给我add_post_ajaxvar_dump($_POST['action']) 给我一个有线结果

<pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'&#39;add_post_ajax&#39; '</font> <i>(length=16)</i>
</pre>

这是什么:o

【问题讨论】:

  • 另一种方法是if(isset($action_array[$_POST['action']]))
  • 对我来说很好用!你确定它返回的是add_post_ajax 吗?
  • 是的,我确定。 @JohnConde,我试过你的还是一样的
  • var_dump($_POST['action']) 甚至 array_keys($_POST['action']) 告诉你什么?
  • 你有xdebug extension turned on,它在var_dump的输出中添加了一些html——更重要的是你不是在寻找一个数组键,你在寻找一个数组值:使用in_array()而不是array_key_exists()

标签: php post array-key-exists


【解决方案1】:

你的问题是单引号。

您的 $_POST['action'] 使用 'add_post_ajax',但您正在检查 add_post_ajax

当你发送这个时:

xmlhttp.send("action='add_post_ajax' ...

你收到这个:

 &#39;add_post_ajax&#39; (length=16)

add_post_ajax是14个字符,多出的两个字符是&amp;#39;;它是单引号的 html 字符。

【讨论】:

    猜你喜欢
    • 2014-03-12
    • 2012-01-16
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    相关资源
    最近更新 更多