Intereting Posts
Когда нужно использовать add_action ('init') vs add_action ('wp_enqueue_scripts') Невозможно вставить подпись в изображение Показать меню плагина WordPress (администратор) редактору Включить несколько настраиваемых типов сообщений Как я могу определить выбранный вариант макета изотопа из Javascript для создания соответствующего макета? Как я могу предоставить ссылку «показать все сообщения» в архиве с разбивкой по страницам? Rewrite vs Redirect from? P = {ID} Пагинация перенаправляется на главную страницу изменить URL-адрес изображения продукта в виджетах и ​​странице магазина Выпускают плагины продукт дизайна Как создать собственный CSS-класс для определенного шаблона страницы? Получение функции post_id в wp_ajax Удаление атрибутов ширины и высоты из wp-get-attachment как я могу вызвать модальный вход на определенную страницу? (разрешено) Загрузка изображений с пользовательской страницы с помощью загрузчика blueimp?

Ошибка формирования массива

Я запускаю SQL-запрос, чтобы получить идентификаторы сообщений пользователя, который в настоящий момент вошел в систему.

Мой запрос работает так, как он был разработан.

$userGadgets = $wpdb->get_results("SELECT item_id FROM mg_gd_mylist WHERE user_id = '$user_id'", ARRAY_A); 

Проблема, с которой я столкнулся, связана с возвратом массива.

 array( 16 ) { [0]=> array( 1 ) { [\"item_id\"]=> string( 5 ) \"10318\" } [1]=> array( 1 ) { [\"item_id\"]=> string( 5 ) \"10378\" } [2]=> array( 1 ) { [\"item_id\"]=> string( 5 ) \"10566\" } [3]=> array( 1 ) { [\"item_id\"]=> string( 5 ) \"10608\" } [4]=> array( 1 ) { [\"item_id\"]=> string( 5 ) \"10614\" } 

Модель, которую я пытаюсь создать, следующая

 Array ( [0] => 140 //The item_id string as an integer [1] => 141 [2] => 142 ) 

Есть идеи по этому поводу? Заранее спасибо.

Здесь кое-что происходит.

Во-первых , вы возвращаете многомерный массив ( массив массивов ), где вложенные массивы имеют имена столбцов в качестве ключей. Причиной этого является использование параметра ARRAY_A . Вы можете прочитать о типах вывода в записи codex . Вы можете быть в порядке, используя OBJECT по умолчанию. Я собираюсь ответить, как вы это делаете.

Во-вторых , значения вложенных массивов – это строки с экранированным SQL-кодом.

Этот ответ дает хорошее объяснение, почему результат сбежал и предлагает stripslashes(); Исправить это.

Этот ответ дает хорошее объяснение, почему строки возвращаются вместо целых чисел. Он предлагает typecasting или функцию PHP, но я бы использовал функцию absress () для WordPress, чтобы убедиться, что у меня есть неотрицательное целое число.

Поэтому вы можете использовать что-то подобное для достижения желаемого результата:

 function wpsx_make_item_id_to_int($userGadgets) { //Init out collection array $item_id_ints = array(); //Process parent array foreach ($userGadgets as $key => $array) { //Process nested arrays foreach ($array as $column_name => $column_value) { //$column_value is your item_ids if (is_string($column_value)) { //Make ID into int and add it to our colection $item_id_ints[] = absint(stripslashes($column_value)); } } } //Return an associative array of (int)item_ids return $item_id_ints; } 

Однако вы уверены, что вам нужно использовать $ wpdb в первую очередь? Я нахожу большую часть времени, когда вы можете достичь того, что вам нужно, используя встроенный WordPress функционально и API с дополнительным преимуществом немного большей легкости и безопасности.