【问题标题】:Issue with PHP arrayPHP数组的问题
【发布时间】:2010-10-04 04:15:03
【问题描述】:

我正在通过 AJAX 向 PHP 文件发送一些数据。这是关于过滤器选项的。无论如何,我是这样发送的:

filter[0][data][type]   string
filter[0][data][value] automobiles
filter[0][field] product

filter[1][data][type] numeric
filter[1][data][value] 6000
filter[1][field] price

以上内容取自 FireBug 控制台。然后,在 PHP 中:

$filter = $_POST['filter'.$i];
if (is_array($filter)) {
    for ($i=0;$i<count($filter);$i++){
        switch($filter[$i]['data']['type']){
            case 'string' : 
                        // I'm doing my select from database based on that and so on

所以,这个翻译应该是: “从数据库中获取所有记录:嗯,让我们检查过滤器...我得到第一个过滤器类型,它是“字符串”,它需要应用于名为 mysql 的列“产品”......所以我在那里搜索“汽车”的值......但我还没有完成,第二个过滤器是指数据库中“价格”列的数字过滤器。所以我' m 获取它的值并将其添加到查询中。所以我最终会选择所有价格大于 6000 的汽车。

到目前为止一切顺利。问题是我获取数据的方式已经改变,我不能再以这种格式发送我的数据了。新格式是一个如下所示的 URL:

filter[0][field]=prodct&filter[0][data][type]=string&filter[0][data][value]=automobiles&filter[1][field]=price&filter[1][data][type]=numeric&filter[1][data][value]=6000

我可以通过“&”对这个进行爆炸并最终得到一个数组...我可以做很多...问题是我不知道如何将我的查询构建脚本调整为使用那种接收到的数据..这样我就可以再次执行“switch($filter[$i]['data']['type']){”...

对修改代码有什么想法吗?

谢谢!

【问题讨论】:

  • 为什么要将数据发送到 url 中的 ajax 脚本?您不能发布数据并完全绕过该步骤吗?

标签: php mysql arrays url post


【解决方案1】:

parse_str($queryString);然后一切正常。该方法将处理查询字符串并将变量导入全局命名空间(这可能很危险),因此可以使用它的第二种形式(在手册页上列出):

$result = array();
parse_str($queryString, $result)
$filters = $result['filter'];

foreach($filters as $filter) {
// your code
}

【讨论】:

    【解决方案2】:

    我会将数据作为 JSON 对象发送过来,然后在 php 上将其转换回一个数组,就像您之前使用的那样。

    在 php 上,您可以使用 json_decode 将 JSON 数据返回到数组中,并且您可以像以前一样继续使用其余代码。

    【讨论】:

      猜你喜欢
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      相关资源
      最近更新 更多