循环时调用变量外部

时间:2015-08-02 06:39:06

标签: php while-loop

我这里有一个简单的代码:

$rand     = mt_rand(100000, 999999);
$sid      = array(
    ":sponsorID" => $rand
);
$accounts = $db->select("accounts", "sponsorID = :sponsorID", $sid);
while (count($accounts) > 0) {

    $new = mt_rand(100000, 999999);
}
echo $new;

它基本上做的是检查$rand中生成的数字是否已经存在于数据库中,并将设置$new变量。我的问题是,当我回显$new时,我总是得到该变量的undefined index。如何在while循环之外调用该变量?

2 个答案:

答案 0 :(得分:3)

你只是在循环中定义$new,所以它在它之外是未定义的。只需在循环之前声明它就可以了:

$new = NULL;
while (count($accounts) > 0) {
    $new = mt_rand(100000, 999999);
}
echo $new;

答案 1 :(得分:1)

您的代码存在一些问题。这是一个修改版本,可以输出您要查找的内容:

<?php 

$sid = array(
  ":sponsorID" => $rand
);
$accounts = $db->select("accounts", "sponsorID = :sponsorID", $sid);

$new = null; 
do { 
  $new = mt_rand(100000, 999999); 
} while (in_array($new, array_column($accounts, 'sponsorId'))); 

echo $new; 

注意:由于array_column()调用,这至少需要php 5.5。但这使得代码简单易懂。