Zend Php Foreach循环数组

Zend Php Foreach循环数组,php,zend-framework,loops,foreach,Php,Zend Framework,Loops,Foreach,我有一个输入字段和一个来自DB表的电子邮件数组 我正在比较输入字段与数组的相似性 但有些人怎么说,我被套圈卡住了 循环检查是否将每个电子邮件与输入字段进行比较 它总是把我带到google.com,不管我输入的内容是否相同 以下是来自控制器的代码: if (isset($_POST['btn_free_download'])) { // Get current input email from input field

我有一个输入字段和一个来自DB表的电子邮件数组

我正在比较输入字段与数组的相似性

但有些人怎么说,我被套圈卡住了

循环检查是否将每个电子邮件与输入字段进行比较

它总是把我带到google.com,不管我输入的内容是否相同

以下是来自控制器的代码:

if (isset($_POST['btn_free_download']))
                {
                    // Get current input email from input field
                    $email = $this->getRequest()->getParam('email');
                    // Get all emails from the user
                    $referred_users = $this->_helper->user()->getReferredUsers()->toArray();
                    // Check the similarity which it with a loop
                    foreach ($referred_users as $referred_user)
                    {
                       similar_text($email, $referred_user['email'], $similar);
                    }
                    // If yes, Pop up message or redirect to some page
                    if ($similar < 97)
                    {
                        $this->_redirect('http://google.com');
                    }
                    // If not, redirect user to free download page
                    else 
                    {
                        $this->_redirect('http://yahoo.com');
                    }
 }
if(isset($\u POST['btn\u free\u download']))
{
//从输入字段获取当前输入电子邮件
$email=$this->getRequest()->getParam('email');
//从用户处获取所有电子邮件
$referered\u users=$this->\u helper->user()->getreferedUsers()->toArray();
//检查与循环的相似性
foreach($refered\u users为$refered\u user)
{
类似文本($email,$referenced_user['email'],$similor);
}
//如果是,则弹出消息或重定向到某个页面
如果($相似<97)
{
$this->\u重定向($this)http://google.com');
}
//否则,将用户重定向到免费下载页面
其他的
{
$this->\u重定向($this)http://yahoo.com');
}
}

我想你需要检查一下。无论您是在zend或任何其他框架上使用Foreach函数,还是仅在原始php上使用它,Foreach函数都是相同的

$referred_users = $this->_helper->user()->getReferredUsers()->toArray();
$referenced_用户可能会持有表中的一系列电子邮件 用户,比如说:

然后,当您使用foreach循环时,它将遍历每个 阵列中的电子邮件

现在让我们在这里讨论您的逻辑:

你总是会得到低于97%的搜索结果,这意味着你将被重定向到谷歌

我假设您没有尝试这样做,并且可能不熟悉foreach函数,这就是为什么您没有得到预期结果的原因

假设您尝试执行以下操作,检查数组中的电子邮件是否匹配(如果数组来自表,检查从param输入的电子邮件是否等于表中的任何电子邮件),然后重定向到某个位置或显示其他消息。下面的解决方案可能对您有所帮助

   $similarText = false;
   foreach ($referred_users as $referred_user)
   {
       // for the first loop $referred_user = one@email.com, for second time $referred_user = two@email.com and goes on
        similar_text($email, $referred_user['email'], $similar);
        if ($similar > 97) {
            $similarText = true;
            break;
        }
    }


                   // If yes, Pop up message or redirect to some page
                    if ($similarText)
                    {
                        $this->_redirect('http://google.com');
                    }
                    // If not, redirect user to free download page
                    else 
                    {
                        $this->_redirect('http://yahoo.com');
                    }

希望你有这个想法。但是,在以后发布问题之前,请务必检查手册。

您已声明$referenced\u用户,但随后您使用$this->referenced\u用户启动循环。这应该是同一个变量。函数类似于文本做什么?$similor最初是什么?@Dylan检查手册,$similor是作为第三个参数的引用传递的相似文本的百分比,similor_text()将以百分比为单位为您计算相似性。@roko oh哇,我以为这是一个自定义函数。直到。谢谢。谢谢,我会像你说的那样试一下,看看是否有效。很抱歉回复太晚…是的,这是我想要的,检查数组中是否有匹配的电子邮件,如果数组中的第一个匹配,它将退出。谢谢你,它工作了,我不知道在循环中放置一个中断将退出循环。我学到了一些东西
foreach ($referred_users as $referred_user)
{
   // for the first loop $referred_user = one@email.com, for second time $referred_user = two@email.com and goes on
    similar_text($email, $referred_user['email'], $similar);
}
                   // If yes, Pop up message or redirect to some page
                    if ($similar < 97)
                    {
                        $this->_redirect('http://google.com');
                    }
                    // If not, redirect user to free download page
                    else 
                    {
                        $this->_redirect('http://yahoo.com');
                    }
i.e. $email = "three@email.com"
   $similarText = false;
   foreach ($referred_users as $referred_user)
   {
       // for the first loop $referred_user = one@email.com, for second time $referred_user = two@email.com and goes on
        similar_text($email, $referred_user['email'], $similar);
        if ($similar > 97) {
            $similarText = true;
            break;
        }
    }


                   // If yes, Pop up message or redirect to some page
                    if ($similarText)
                    {
                        $this->_redirect('http://google.com');
                    }
                    // If not, redirect user to free download page
                    else 
                    {
                        $this->_redirect('http://yahoo.com');
                    }