php isset стенография иначе возвращаемый массив не работает - PullRequest
0 голосов
/ 21 января 2012

У меня есть эта строка кода php

$data['viewData']['filter'] = isset($parameters['filter']) ? $parameters['filter'] : array('filter1', 'filter2', 'filter3', 'filter4');

Что-то не так с сокращением isset, потому что, когда я print_r($data['viewData']['filter'] с остальным активным, ничего не возвращается / null / empty.

Чтоможет быть не так?

Редактировать, чтобы добавить дополнительную информацию:

Код внутри контроллера:

if (isset($parameters['filter']))
{
    $data['viewData']['filter'] = $parameters['filter'];
}
else
{
    $data['viewData']['filter'] = array('filter1', 'filter2', 'filter3', 'filter4');              
}
$data['viewData']['query']   = $parameters['search'];
$data['viewData']['results'] = $searchResults;
$data['view'] = 'searchResults';
$this->load->view('includes/template', $data);

Код внутреннего вида:

prePrint($viewData['apis']);

И я ничего не получаю, когда else вводит

Codeigniter используется в качестве каркаса *prePrint это просто пользовательская функция, которая содержит <pre> и print_r();

1 Ответ

2 голосов
/ 21 января 2012

Я не совсем понимаю, что вы имеете в виду, когда он возвращает «ничто / ноль / пусто», поскольку переменная не может вернуть все 3 из них одновременно.isset не проверяет, существуют ли какие-либо данные, он только проверяет, установлена ​​ли переменная или индекс массива, поэтому, если вам нужно убедиться, что он установлен и также содержит данные, вы можете попробовать это:

if (isset($parameters['filter']) && $parameters['filter'])
...