Я создаю массив и заполняю его переменными (индекс и значение) кодом в 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 данный
Ваш код выглядит хорошо. Покажите полный обзор и модель. – SiZE
Я пробовал свой код, кажется мне хорошим. Я попробовал 'var_dump (lookup :: getRowFlag()); var_dump (Lookup :: row_color ('browsing', 'http'));' И сначала верните массив, а другой true ... В чем проблема? Вы используете 'checkStatus()' раньше? –
На самом деле вам нужно проверить array_key_exist для просмотра индекса, а также для $ row, а затем is_array .... потому что, когда этот код выполняется не каждый раз self :: $ row_flags ['browsing'] [$ row] будет массивом, лучше проверьте, что и возвращать ЛОЖЬ или что-то ... как упоминалось в ответе. –