php-скрипт, вызываемый ajax, работает не так, как в apache

#php #jquery #arrays #ajax

Вопрос:

Я только что столкнулся с проблемой, когда пытался присвоить некоторые значения массиву с числовым индексом. Это работает на странице php на моем веб-сайте apache, но идентичный код неправильно работает в php-скрипте, который вызывается ajax на том же веб-сайте. Это работает только в том случае, если я назначаю массиву букву, чтобы превратить его из индексированного массива в ассоциативный массив. Кто-нибудь может объяснить, почему?

Вот пример моего кода:

 $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». По какой-то причине он просто присваивает массиву первую букву значения$ $val . Я могу проверить $value , отправив его на error_log() , и это полная строка (т. Е. «хорошо»), но тогда $val[0] это просто «w». Сначала я подумал, что это $val похоже на строку и возвращает смещение , но если я 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 будет равно «welldrillrig» при вызове с помощью ajax, как и при запуске в apache.

Я что-то упускаю?

Комментарии:

1. Нет никакой разницы между PHP, работающим «обычным» и «ajax», это одно и то же. Если есть какая-то разница в выводе, то она проистекает из разницы во входных данных.

2. Покажите вызов Ajax, пожалуйста

3. Похоже, единственная разница в том, как вы вызываете PHP, заключается в следующем … «АЯКС», верно? Таким образом, само собой разумеется, что проблема заключается в AJAX/JS. Ты должен показать нам это.