如何访问IF块之外的php变量

时间:2016-07-09 06:17:16

标签: php scope

我试图在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上关于此的其他帖子,但它们似乎都没有工作。

3 个答案:

答案 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 loopphp页面顶部声明为

$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。

希望我能帮到你。请更新状态。