2015-09-22 32 views
0

我通過php(yii框架)中的代碼創建一個數組並填充變量(索引和值)。但我的程序不能正常工作。填充完後我無法使用我的數組。使用in_array和多維數組時獲得警告

在模型

Lookup.php

private static $row_flags= array(); 
private static $table_flags= array(); 


public static function checkStatus($value,$row,$column) { 

    $thresholds= hreshold::model()->findAll(array('select'=>$row.','.$column)); 
    self::$row_flags['browsing'][$row][$column]=($value < $thresholds[0]->$row) ?"green":(($value > $thresholds[0]->$column)?"red":"yellow"); 
    return self::$row_flags['browsing'][$row][$column]; 

} 

public static function getRowFlag() { 

     return self::$row_flags; 

    } 

public static function row_color($table,$row){ 

    return in_array("yellow",self::$row_flags['browsing'][$row]); 
    } 

view.php

<?php 
    lookup::checkStatus(3001,'http','access'); 
    lookup::checkStatus(3001,'http','access'); 
    lookup::checkStatus(3001,'http','core'); 
    lookup::checkStatus(3001,'http','blackbox'); 
    lookup::checkStatus(3001,'http','gateway'); 
    lookup::checkStatus(3001,'http','internet'); 

    print_r(lookup::getRowFlag()); 
?> 
    Array 
     (
      [browsing] => Array 
          (
           [http] => Array 
              (
               [access] => yellow 
               [core] => yellow 
               [blackbox] => yellow 
               [gateway] => yellow 
               [internet] => yellow 
              ) 
          ) 
    ) 

如果我在視圖調用Lookup::row_color('browsing','http')我有

警告:in_array()預計參數2是array,null given

+0

l(array('select'=>$row.','.$column));

您的代碼看起來不錯。顯示完整的視圖和模型。 – SiZE

+0

我試過你的代碼,對我來說似乎很好。我嘗試了'var_dump(lookup :: getRowFlag()); var_dump(Lookup :: row_color('browsing','http'));'首先返回一個數組,另一個是真的......這是什麼問題?你以前使用'checkStatus()'嗎? –

+0

其實你需要檢查array_key_exist的瀏覽索引,也爲$ row,然後是is_array ....因爲當這段代碼不是每次都執行self :: $ row_flags ['browsing'] [$ row]將是數組,所以更好地檢查並返回FALSE或什麼......如答案中所述。 –

回答

-2

使用此:

public static function row_color($table,$row){ 
    if (is_array(self::$row_flags['browsing'][$row])) { 
    return in_array("yellow",self::$row_flags['browsing'][$row]); 
    } 
    return FALSE; 
} 
+0

這個問題是關於訪問錯過的數組。她不需要陣型。 – SiZE

+0

@SiZE這是一個嘗試,如果這個錯誤是Jaimin Moslake在評論中提到的。 – jitendrapurohit

+0

由於OP只關注警告,所以沒有提到數據丟失。謝謝! – jitendrapurohit

0

也許列是麻煩製造者:改用l(array('select'=>$row.','.'select'=>$column));