我需要获取$_GET['id_item']
拥有的最后一个非空值
session_start();
if(!isset($_SESSION['id_item']) || $_SESSION['id_item']==='' || ( isset($_GET['id_item']) && !$_GET['id_item'] === '' )){
$_SESSION['id_item'] = $_GET['id_item'];
}else{
/*no need to update*/
}
echo $_SESSION['id_item'] /* Allways in blank :S */
var_dump($_GET)
输出:
array(1) { ["id_item"]=> string(2) "50" }
知道为什么$_SESSION
没有保存?
答案 0 :(得分:1)
解决这个问题:
$_SESSION['id_item']==''
至$_SESSION['id_item']===''
或者您可以使用:
empty($_SESSION['id_item'])
答案 1 :(得分:1)
除非您希望(有效)ID为0
,否则您可以将!isset($_SESSION['id_item']) || $_SESSION['id_item']===''
缩减为empty($_SESSION['id_item'])
。 !$_GET['id_item'] === ''
始终为false,因为这会转换为false === ''
。你可能正在寻找$_GET['id_item'] !== ''
。同样,如果0
不是有效值,您可以在此处转到!empty($_GET['id_item'])
。
那就是说,条件的整个!isset($_SESSION['id_item']) || $_SESSION['id_item']===''
部分没有多大意义。第二部分“if _GET id_item present”始终需要条件的主体($_SESSION['id_item'] = $_GET['id_item'];
)才能工作。所以你可以减少你的状况
<?php
if (!empty($_GET['id_item'])) {
// import new id_item
$_SESSION['id_item'] = $_GET['id_item'];
} elseif (!isset($_SESSION['id_item'])) {
// make sure we don't run into an undefined array index notice
$_SESSION['id_item'] = null;
}
var_dump($_SESSION['id_item]);
答案 2 :(得分:0)
您是否在start_session
之前输出了任何内容。如果是这样,它将无法发送cookie。这可能就是它无法正常工作的原因。