我试图在myphp代码中访问if块之外的变量。
这是我的代码;
$result = $db->prepare("SELECT * FROM content order by id DESC");
$result->execute();
$dataArr = array();
$result = $result->get_result();
while($row = $result->fetch_assoc()){
$userID = $row['uid'];
//get user name from another table
$name = $db->prepare("SELECT * FROM registered_users where id = ?");
$name->bind_param("i",$userID);
$name->execute();
$getName = $name->get_result();
if(($getRowCount = $name->num_rows) == 1){
$resultRow = $name->fetch_assoc();
$FirstName = $resultRow['first_name'];
}
array_push($dataArr , array("name"=>$FirstName));
}
所以它在行array_push上抛出一个错误说:
Notice: Undefined variable: FirstName in /home/path/path/file.php on line <line>
有没有办法可以访问这个变量,因为它甚至在if块之外,如果这确实是问题。此外,我已经关注了stackoverflow上关于此的其他帖子,但它们似乎都没有工作。
答案 0 :(得分:0)
您需要在$FirstName
之前声明变量if
,以便在Array_push
$FirstName = ''; // declare variable before the if
if(($getRowCount = $name->num_rows) == 1){
$resultRow = $name->fetch_assoc();
$FirstName = $resultRow['first_name'];
}
array_push($dataArr , array("name"=>$FirstName));
}
ThanhPV评论
或者检查由isset()
函数定义的变量。 (如果您不想使用全局范围)就像那样:
array_push($dataArr , array("name"=>isset($FirstName) ? $FirstName : ""));
答案 1 :(得分:0)
嗨,如果您对此variable
进行了解答,则只需将其if loop
或php
页面顶部声明为
$FirstName = '';
然后只需将其分配到if loop
内并在任何地方使用
在使用它之前,只需检查empty
或不是
if(!empty($FirstName)){
array_push($dataArr , array("name"=>$FirstName));
}
答案 2 :(得分:0)
如果要使用它,请在循环外声明变量。
/* code before */
$result = $db->prepare("SELECT * FROM content order by id DESC");
$result->execute();
$dataArr = array();
$result = $result->get_result();
while($row = $result->fetch_assoc()){
$userID = $row['uid'];
//get user name from another table
$name = $db->prepare("SELECT * FROM registered_users where id = ?");
$name->bind_param("i",$userID);
$name->execute();
$getName = $name->get_result();
$FirstName = '';
if(($getRowCount = $name->num_rows) == 1){
$resultRow = $name->fetch_assoc();
$FirstName = $resultRow['first_name'];
}
array_push($dataArr , array("name"=>$FirstName));
}
/* code after*/
现在您已将$FirstName
声明为静态。因此即使在退出if loop
之后,该值也不会被破坏。并且在下次进入if循环之前重新初始化为null。