【问题标题】:check function return value without execute it again检查函数返回值而不再次执行
【发布时间】:2013-06-20 08:08:33
【问题描述】:

如何在不再次执行的情况下获取函数返回值?

我用过这个但是这个执行函数又来了

我的功能:

function article()
{
    if($_GET['action'] == "article" && !empty($_GET['id']))
    {
        $id = intval($_GET['id']);
        $article = array();
        $selectArticle = mysql_query("SELECT * FROM articles WHERE id='$id'");
        $rowArticle = mysql_fetch_array($selectArticle);

        $id = $rowArticle['id'];
        $title = stripcslashes($rowArticle['title']);
        $category = stripcslashes($rowArticle['category']);
        $image = stripcslashes($rowArticle['image']);
        $description = stripcslashes($rowArticle['description']);
        $full_description = stripcslashes($rowArticle['full_description']);
        $keywords = stripcslashes($rowArticle['keywords']);
        $url = "/article/" . $rowArticle['id'] . "/" . str_replace(" ","-",stripcslashes($rowArticle['title']));
        $article = array('id' => $id, 'title' => $title, 'category' => $category, 'image' => $image, 'description' => $description, 'full_description' => $full_description, 'keywords' => $keywords, 'url' => $url);
        mysql_query("UPDATE articles SET visits=visits+1 WHERE id='$id'");
    }
    return $article;
}

如何检查

if (article() != null)
{
    $article = article();
    return $article['title'];
}

【问题讨论】:

  • 你也可以将 article() 存储到一个变量中,并使用变量 $article 代替 article()

标签: php function return


【解决方案1】:

这应该做你想做的事

if (null !== ($article = article())) {
    return $article['title'];
}

这会进行“同时”分配和比较。 首先,评估这部分:($article = article())。它产生一个null 值或一个array,它存储在$article。
其结果(null 或 array)然后由 if 结构评估:if (null !== $article) 并恢复正常流程。

【讨论】:

  • 这部分不再运行函数了? -> ($article = article())
  • 我在 article() 函数中有一个更新 mysql 查询,它再次执行它并且更新查询运行两次。在我不想再次执行之前执行的文章功能
  • 我不知道你所说的“再次执行”是什么意思。我发布的代码运行一次article() 函数。
  • 我之前调用了 article() 并且 ($article = article()) 再次调用它
  • 那么在您的原始示例中,article() 函数运行了 3 次?这意味着代码比您发布的要多。您应该发布完整的代码。
【解决方案2】:

像这样

$article_var = article();

if ($article_var!=null)
{
      //do stuff
      //return $article['title'] // etc
}

【讨论】:

  • 在我不想再次执行之前执行的函数
【解决方案3】:

稍微修改检查。

$article = article();
return $article != null ? $article['title'] : null;

【讨论】:

    猜你喜欢
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 2016-05-31
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 2021-10-01
    相关资源
    最近更新 更多