2015-09-22 4 views
0

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

+0

Ваш код выглядит хорошо. Покажите полный обзор и модель. – SiZE

+0

Я пробовал свой код, кажется мне хорошим. Я попробовал 'var_dump (lookup :: getRowFlag()); var_dump (Lookup :: row_color ('browsing', 'http'));' И сначала верните массив, а другой true ... В чем проблема? Вы используете 'checkStatus()' раньше? –

+0

На самом деле вам нужно проверить array_key_exist для просмотра индекса, а также для $ row, а затем is_array .... потому что, когда этот код выполняется не каждый раз self :: $ row_flags ['browsing'] [$ row] будет массивом, лучше проверьте, что и возвращать ЛОЖЬ или что-то ... как упоминалось в ответе. –

ответ

-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.','.$column));

Использование l(array('select'=>$row.','.'select'=>$column));

Смежные вопросы