#php #arrays #for-loop #curly-braces
#php #массивы #for-цикл #фигурные скобки
Вопрос:
У меня есть массив. Это происходит из этого запроса:
$table_array=array();
$table_array = $mydb->get_results($mydb->prepare("SELECT sid, stitle FROM tablename"));
Я успешно извлекаю данные. Консоль показывает, что json_encode возвращается через ajax (функция успеха):
function align_surveys(){
jQuery.ajax({
type: 'POST',
url: MyAjax.ajaxurl,
data: {"action": "align_sids"},
success:
function(data){
console.log('data: ' data)
}
});
}
"data:":[{"sid":"525331","stitle":"First Title"},{"sid":"367775","stitle":"Second Title"}]
Однако, когда я запускаю цикл foreach, я получаю ошибку 500 при попытке получить доступ к его элементам.
Это ошибки:
foreach($table_array as $row){
$s_ids[] = $row[0];
}
И, это ошибки:
foreach($table_array as $row){
$s_ids[] = $row['sid'];
}
gettype говорит мне, что это на самом деле массив. Но всякий раз, когда я ссылаюсь на элемент массива, я выдаю ошибку. Я не могу ее решить. Это как-то связано с дополнительными фигурными скобками внутри квадратных скобок? Кто-нибудь, пожалуйста, укажите мне правильное направление. Прошло несколько часов….
ОБНОВЛЕНИЕ: print_r покажи мне это:
Array ( [0] => Array ( [surveyls_survey_id] => 525331 [0] => 525331 [surveyls_title] => New Survey [1] => New Survey ) [1] => Array ( [surveyls_survey_id] => 367775 [0] => 367775 [surveyls_title] => Second Survey [1] => Second Survey ) )
Мне кажется, что это массив массивов, где ключи на самом деле являются значениями…Не знаю, как и почему я получаю именно такой результат.
Ответ №1:
Эти «данные» в начале выглядят так, как будто они отделены от другого объекта. Попробуйте table_array['data']
и посмотрите, работает ли это для вас. Если нет, можете ли вы опубликовать весь объект json, который выводится с помощью json_encode.
Комментарии:
1. Эти «данные:» — это всего лишь часть консоли. оператор журнала — чтобы помочь мне разобраться.
Ответ №2:
Я решил это. Мне пришлось json_encode массив, чтобы я мог эффективно его анализировать. Спасибо за ваш вклад.
Ответ №3:
Есть несколько причин, по которым у вас может возникнуть эта проблема.
Первый, по-видимому, адресуется там, где вы явно задали тип array() ; Второй — с помощью команды JSON_DECODE . Если вы используете логическое значение true / false с этой функцией, она может возвращать массив или объект.
$mayarray = json_decode($jsonobject,true);
Это загружает данные JSON в ассоциативный массив. Если вы используете false или оставляете его пустым, в зависимости от вашей конфигурации PHP, он вернется как объект, что означает, что если вы попытаетесь получить к нему доступ, как если бы это был массив, вы получите ошибку 500.