2011-07-18 2 views
1

私はDrupal Panels/PHP Accessプラグインに固執しています。1つの完璧なPHPスニペットで3つの "複雑な" PHP条件を結合

少なくとも、私は最後のスニペットを作成するための3つの条件を見つけました。その目的はTRUEを返すことです。 "condition1がTRUE"の場合、または "condition2がTRUE"の場合、または "condition3がTRUE"の場合。私は似たような質問をたくさん見つけましたが、最後の条件では、これを行う正しい方法を見つけるためにここに投稿するよう強制します。

条件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知識にとっては難しいことです。少し助けが必要です!

答えて

0

3番目の条件の結果を(変数に)保存し、この結果を使用して最終条件/クエリを実行します。しかし、それが関数であれば、3番目の条件を照会できます。

+0

このように、私はこの "if"、 "return"などで失われています。私は見つけようとします。これを行う方法。 – elektrorl

+0

私は自分の答えを修正しました。あなたは3番目の条件からfunctiomを作るべきです。 – Bytemain

0

コードを適切に配置し、に改行をたくさん入れてください。

しかし、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 defined('BASE_PATH') OR die('Not Allowed'); 
+0

あなたのアドバイスをいただきありがとうございますXeoncross、しかし、ここでは最初の条件http://drupal.org/node/446798が見つかりました。構造体は同じ結果を出力しません。私は理解しようとしています:私にとって、変数はif条件の前に宣言されています。 – elektrorl

+0

私はパスや定数をテストしたくありません。あなたがdrupalを知らないのであれば、ビューやDBクエリの結果です。 – elektrorl

+0

@elektrorl条件内で変数を設定し、それらの値を 'if($ value = hi()){...}'でテストすることもできます。 – Xeoncross

関連する問題