#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. Ты должен показать нам это.