Intereting Posts
Как заставить next_posts_link работать с настраиваемой страницей Что-то генерирует спам-страницы на моем сайте Разбивка страниц: последняя страница отсутствует Проводка данных от ионных до wordpress Социальные иконки на моей индексной странице не посещают посетителей на определенных сайтах Получить список существующих переходных процессов Как создавать сообщения или страницы с именами в wordpress? Ошибка Bootstrap в плагине WordPress просмотр подкатегорий по идентификатору Создайте и отправьте информационный бюллетень из интерфейса Есть ли способ обновить тему без потери пользовательских шаблонов? Проблема с возвратом более чем однострочных титров Очень странная проблема с поисковым запросом Элементы, плавающие друг над другом при изменении размера или проверки сайта на мобильных устройствах. Две тысячи двенадчать Лучшие комментаторы: исключить admin

Многомерный массив

У меня есть массив в моем шаблоне wordpress, где я хочу настроить целевой статус зарегистрированного пользователя. Ниже приведено то, что я имею в настоящее время с $ args, содержащим статус со всеми сохраненными значениями состояния.

$user_id = get_current_user_id(); $args = array( 'status' => array( 'wcm-active', 'wcm-delayed', 'wcm-complimentary', 'wcm-pending', 'wcm-paused', 'wcm-expired', 'wcm-cancelled' ), ); $active_memberships = wc_memberships_get_user_memberships( $user_id, $args ); 

Затем я хочу создать некоторые if-инструкции в шаблоне темы, которые нацелены на один из определенных статусов пользователя (например, если пользовательский статус задерживается, покажите это содержимое. Ниже приведено то, что у меня есть, но он не кажется правильным, поэтому я думаю, что у меня есть что-то неправильно при таргетинге на ключ:

 if ($active_memberships = wc_memberships_get_user_memberships( $user_id, $args[0][1] )) { show content } 

Solutions Collecting From Web of "Многомерный массив"

Многомерный массив в этом случае представляет собой многомерный ассоциативный массив или пару ключ-значение. Ключ – это 'status' а значение – ваш массив строк.

В условной проверке вы попытались получить доступ к значениям с помощью числового индекса, который в этом случае не существует, поскольку ничто не было установлено для использования этих индексов. Чтобы получить доступ к приведенным выше значениям, вы должны сделать что-то вроде этого: $args['status'][1];

Ассоциативные массивы и массивы рассматриваются как один и тот же тип в php, с той лишь разницей, что к ним обращаются ключи ассоциативного массива, которые являются цепочками. Как таковые, в php-функциях встроены функции «итерации» по ассоциативным массивам, например, foreach, которые могут создавать впечатление, что они являются совершенно разными животными, когда они не являются.

Для получения дополнительной информации ознакомьтесь с документами php здесь: http://php.net/manual/en/language.types.array.php И конкретно этот пример: http://php.net/manual/en/language.types. array.php # пример-61

Обновить

Все, что сказано, в коде выше кажется, что он терпит неудачу из-за проблемы с условными проверками.

Когда выполняется оператор if, он переставляет переменную в результат функции справа от знака равенства. Таким образом, значение $ active_memberships устанавливается равным результату функции wc_memberships_get_user_memberships (). Если результат функции не является ложным или NULL или каким-либо другим значением false, он будет передавать проверку при установке $active_memberships в новое значение. Установив это на новое значение, это как бы разрушает цель этой переменной, так как я предполагаю, что вы хотите использовать ее для хранения всех членских составов пользователя, а затем проверить, чтобы каждое членство позже отображало конкретный контент или делало что-то еще в код.

Возможно, вы планируете просто устанавливать $active_memberships один раз с вашими аргументами, а затем проверять наличие каких-либо членских $active_memberships а затем и любых конкретных членов. Например:

 if (!empty($active_memberships)) { // show content if the current user has any memberships if ( in_array('wcm-active', $active_memberships) ) { // show content if 'wcm-active' is present in the active_memberships } if ( in_array('wcm-delayed', $active_memberships) ) { // show content if 'wcm-delayed' is present in the active_memberships } } 

Вам решать, как лучше структурировать эти элементы управления, но это должно заставить вас двигаться дальше!

Так что в этом посте есть кое-какие знания. Как получить доступ к значениям ассоциативного массива и немного об условных операторах – вы можете установить переменные во время оценки условного оператора. Вы можете сделать это в том случае, если инструкции так же, как и цикл for, будут устанавливать переменную на каждой итерации. Этот способ установки переменной часто неясно человеку, читающему такой код, хотя я бы старался его избежать.

Подробнее о структурах управления php вы можете прочитать здесь: http://php.net/manual/en/language.control-structures.php

И операторы сравнения здесь: http://php.net/manual/en/language.operators.comparison.php