所以我一直试图设计一个只有echo
会话变量才能设置的函数,这样它就不会创建关于未定义变量的'Notice'。我知道可以使用:
if(isset($_SESSION['i'])){ echo $_SESSION['i'];}
但是当有负载时它开始变得有点混乱(正如你可能已经猜到的那样,它是将数据带回一个表格......无论出于何种原因)。我的一些价值观也只需要回报,如果它等于某种东西,回应别的东西会让它变得更加混乱:
if(isset($_SESSION['i'])){if($_SESSION['i']=='value'){ echo 'Something';}}
因此,为了尝试懒惰,整理一下,我尝试了这些功能:
function ifsetecho($variable) {
if(!empty($variable)) {
echo $variable;
}
}
function ifseteqecho($variable,$eq,$output) {
if(isset($variable)) {
if($variable==$eq) {
echo $output;
}
}
}
哪个不能工作,因为要通过该函数,必须声明变量......
有没有人找到类似这项工作的方法?
答案 0 :(得分:0)
您可以使用变量:
$cat = "beautiful";
$dog = "lovely";
function ifsetecho($variable) {
global $$variable;
if(!empty($$variable)){
echo $$variable;
}
}
ifsetecho("cat");
echo "<br/>";
ifsetecho("dog");
echo "<br/>";
ifsetecho("elephant");
更新:使用相当复杂的代码,我已成功满足您的要求:
session_start();
$cat = "beautiful";
$dog = "lovely";
$_SESSION['person']['fname'] = "Irene";
function ifsetecho($variable){
$pattern = "/([_a-zA-Z][_a-zA-Z0-9]+)".str_repeat("(?:\\['([_a-zA-Z0-9]+)'\\])?", 6)."/";
if(preg_match($pattern, $variable, $matches)){
global ${$matches[1]};
if(empty(${$matches[1]})){
return false;
}
$plush = ${$matches[1]};
for($i = 2; $i < sizeof($matches); $i++){
if(empty($plush[$matches[$i]])){
return false;
}
$plush = $plush[$matches[$i]];
}
echo $plush;
return true;
}
return false;
}
ifsetecho("cat");
echo "<br/>";
ifsetecho("dog");
echo "<br/>";
ifsetecho("elephant");
echo "<br/>";
ifsetecho("_SESSION['person']['fname']");
echo "<br/>";
ifsetecho("_SESSION['person']['uname']");
echo "<br/>";
答案 1 :(得分:0)
也许你可以用foreach来实现这个目标?
foreach ($_SESSION as $variable)
{function ifseteqecho($variable,$eq,$output) {
if($variable==$eq) {
echo $output;
}
else echo $variable;
}
}
现在这将检查相同的$eq
,但是有一个对应的$eq
到$variables
的数组:
$equiv = array
('1'=>'foo',
'blue'=>'bar',);
你可以全部检查:
foreach ($_SESSION as $variable)
{function ifseteqecho($variable,$equiv) {
if(isset($equiv[$variable])) {
echo $equiv[$variable];
}
else {
echo $variable;
}
}
}
答案 2 :(得分:0)
这样的东西?,你可以扩展它以满足你的确切需求......
function echoIfSet($varName, array $fromArray=null){
if(isset($fromArray)){
if(isset($fromArray[$varName])&&!empty($fromArray[$varName])){
echo $fromArray[$varName];
}
}elseif(isset($$varName)&&!empty($$varName)){
echo $$varName;
}
}