Объедините три "сложных" условия PHP в один прекрасный фрагмент PHP - PullRequest
1 голос
/ 18 июля 2011

Я застрял в плагинах Drupal Panels / PHP Access.

По крайней мере, теперь я нашел три условия для создания моего последнего фрагмента. цель этого - вернуть ИСТИНА; если «условие1 - ИСТИНА», ИЛИ - условие2 - ИСТИНА, «условие ИЛИ - ИСТИНА». Я нашел много похожих вопросов, но последнее условие заставляет меня писать здесь, чтобы найти правильный способ сделать это.

Состояние 1:

// At least  $view1->result has result.
$view1 = views_get_view('sp_onglet_videos');
$view1->set_display('views-tab-embed_1');
$output1 = $view1->preview();
if ($view1->result) {
  return TRUE;
}

Состояние 2 (тоже самое):

// At least  $view2->result has result.
$view2 = views_get_view('sp_onglet_audio');
$view2->set_display('views-tab-default');
$output2 = $view2->preview();
if ($view2->result) {
  return TRUE;
}

Условие 3 более сложное:

// Checks for content in the field field_txt_videos.
if (isset($contexts['argument_nid_1']->data-> field_txt_videos)) {
  $field = $contexts['argument_nid_1']->data-> field_txt_videos;
  if (is_null($field)) {
    return FALSE;
  }
  if (is_array($field)) {
    foreach ($field as $key => $val) {
      if (is_array($val)) {
        $field[$key] = array_filter($val);
      }
    }
    $field = array_filter($field);
    return count($field);
  }
  if (is_string($field) && trim($field) == '') {
    return FALSE;
  }
  if ($field) {
    return TRUE;
  }
  return FALSE;
}

Я хотел бы иметь что-то чистое (и функциональное), подобное этому:

if ($view1->result && $view2->result && $field) {
return TRUE;
      }

Но это сложно для моего знания PHP. Нужна небольшая помощь!

Ответы [ 2 ]

0 голосов
/ 18 июля 2011

Лучше правильно разместить ваш код и использовать множество новых строк .

Однако в PHP есть несколько довольно интересных приемов для выполнения присваивания внутри условных операторов.

if(($view1 = views_get_view('sp_onglet_videos')) AND $view1->set_display('views-tab-embed_1') AND ($output1 = $view1->preview()) AND $view1->result) return TRUE;

Однако, как вы можете видеть, этот код беспорядок - не делайте этого, если ваше назначение не очень мало.Возьмите эту простую проверку безопасности вверху файла PHP:

<?php defined('BASE_PATH') OR die('Not Allowed');
0 голосов
/ 18 июля 2011

Вы хотите сохранить результат 3-го условия (в переменную) и использовать этот результат для выполнения вашего окончательного условия / запроса.Но вы можете запросить 3-е условие, если это функция.

...