【问题标题】:php isset shorthand else return array not workingphp isset 速记否则返回数组不起作用
【发布时间】:2021-08-13 23:48:39
【问题描述】:

我有这个 php 代码行

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

isset 速记有什么问题,因为当我 print_r($data['viewData']['filter'] 在 else 处于活动状态时,不会返回任何内容/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(); 的自定义函数

【问题讨论】:

  • 代码没有问题。你确定这个变量没有受到其他任何东西的影响吗?
  • 一点也不,这很奇怪,因为如果 isset 为 true,则返回应该返回的数据,如果不是,则不返回任何内容
  • 你确定它符合 else 条件吗?尝试将它放在 if/else 块中并进行一些调试输出,以确认 $parameters['filter'] 确实没有设置,而您认为它不是...
  • 好吧,我已经复制了你的 sn-p 并对其进行了测试,它对我来说没有问题。失败的原因必须在代码的另一部分。
  • 视图内的代码返回的是空值? $viewData['apis'] 设置了吗?您正在省略视图定义。我很困惑,因为您在代码中没有设置一个名为“api”的字段,但您尝试在视图中读取它。

标签: php codeigniter isset shorthand


【解决方案1】:

我不太明白你所说的返回“无/空/空”是什么意思,因为一个变量不能一次返回所有 3 个。 isset 不检查是否存在任何数据,它只检查是否设置了变量或数组索引。如果您想同时确保它已设置且不为空,请尝试以下操作:

if (!empty($parameters['filter']))

【讨论】:

  • :D 这不是什么,null,empty...我的意思是它只是不返回数据。谢谢你的解决方案,这就是我所缺少的确保它已设置并且还包含数据
  • !empty() 与此答案相同。
  • 哇,这是很久以前的事了!我不敢相信我建议将其作为答案 facepalm。但它确实有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 2018-10-04
  • 1970-01-01
相关资源
最近更新 更多