首页 > 解决方案 > ajax调用的php脚本与apache中的工作方式不同

问题描述

我刚刚遇到了一个问题,我试图将一些值分配给具有数字索引的数组。这适用于我的 apache 网站上的 php 页面,但相同的代码在同一网站中由 ajax 调用的 php 脚本中无法正常工作。仅当我为数组分配一个字母以将其从索引数组转换为关联数组时,它才有效。谁能解释为什么?

这是我的代码示例:

$search = "well,drill rig";
$search1 = array_filter(explode(' ',str_replace(',',' ',$search)));
$val = array();
foreach ($search1 as $key => $value) {
    $val[$key] = $value;
    $q_search.="$val[$key];
}
echo $q_search;

在常规网页上,这将输出“welldrillrig”。如果由 ajax 调用,则返回“wdr”。出于某种原因,它只是将 $value 的第一个字母分配给$val数组。我可以$value通过发送它来检查error_log()它是完整的字符串(即“well”),但$val[0]它只是“w”。起初我认为它$val像字符串一样处理并返回偏移量,但如果 I print_r($val),我得到[0]=>"w".

如果我更改代码以创建$val一个关联数组,每个键都有一个字母:

$keystring = 'abc';
$search = "well,drill rig";
$search1 = array_filter(explode(' ',str_replace(',',' ',$search)));
$val = array();
foreach ($search1 as $key => $value) {
    $keyval = $keystring[$key];
    $val["$keyval"] = $value;
    $q_search.="$val["$keyval"];
}

然后它就像我期望的那样工作。 $q_search当使用 ajax 调用时,将等于“welldrillrig”,就像我在 apache 中运行它时一样。

我错过了什么吗?

标签: phpjqueryarraysajax

解决方案


推荐阅读