Intereting Posts
Различные пользовательские изображения заголовков на разных страницах проверьте, удалено ли на сайте WordPress обновления Билет поддержки JS – автоматическое создание учетной записи WP Быстрое редактирование: выбранная пользовательская таксономия не обновляется после сохранения Проблема с настройкой темы Почтовая форма как пользовательская почта Запустите снова текущий запрос через ajax, но измените var форма пользовательского поиска для пользовательских сообщений Добавить поле профиля (usermeta) для добавления нового пользователя Как обновить итоги роли пользователя пользовательские поля wordpress Как переименовать имя файла вложения изображения, используя php Добавление пользовательских полей в класс мета-полей «на лету» MathJax внутри короткого кода Почему в администраторе нет моей зарегистрированной боковой панели?

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

Я запускаю 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 ) 

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

Solutions Collecting From Web of "Ошибка формирования массива"

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

Во-первых , вы возвращаете многомерный массив ( массив массивов ), где вложенные массивы имеют имена столбцов в качестве ключей. Причиной этого является использование параметра 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 с дополнительным преимуществом немного большей легкости и безопасности.