将数据库中的数组值(int)与if语句中的整数进行比较

时间:2013-06-14 16:47:10

标签: php if-statement integer comparison sitemap

问题很简单,但很难解释。我从数据库中提取数据'url'和'section'。 'section'值是一个整数。我将所有这些数据拉到另一个数组中以显示在另一个页面上。 (这是站点地图生成器)

<?php 

$query = "SELECT url, section FROM table WHERE section <= 3";
    $result = db_query($query, $dbh);

    $dynamic_urls = array();
    while ($row = db_fetch_array($result))
    {
    $dynamic_urls[] = "http://example.com/" . checkSection() . $row['url'];
    }

    function checkSection(){
        if ($row['section'] == 1)
        {
            return "web/";
        } 
        elseif ($row['section'] == 2)
        {
            return "email/";
        } 
        elseif ($row['section'] == 3){
            return "print/";
        }
        return "FAILED/";
    }

    ?>

我认为问题在于checkSection()方法在将数组值$ row ['section']与整数(1,2,3)进行比较时遇到问题,如图所示。输出文件只是遍历数组$ dynamic_urls并将它们打印到页面,这里有一些示例输出:

  

http://example.com/FAILED/example_permalink1

     

http://example.com/FAILED/example_permalink2

     

http://example.com/FAILED/example_permalink3

     

http://example.com/FAILED/example_permalink4

     

http://example.com/FAILED/example_permalink5

     

http://example.com/FAILED/example_permalink6

我需要那些'FAILED'输出作为我正在寻找的相关'web /','email /'或'print /'标题。

为什么我的if语句无法将$ row ['section_id']与整数进行比较?

1 个答案:

答案 0 :(得分:0)

问题是您的行未在函数范围内接收。

function checkSection(){
    if ($row['section'] == 1)
    {
        return "web/";
    } 
    elseif ($row['section'] == 2)
    {
        return "email/";
    } 
    elseif ($row['section'] == 3){
        return "print/";
    }
    return "FAILED/";
}

对于该函数,$ row为空。您需要将其作为变量传递给函数才能使其生效。

function checkSection($row){
    if ($row['section'] == 1)
    {
        return "web/";
    } 
    elseif ($row['section'] == 2)
    {
        return "email/";
    } 
    elseif ($row['section'] == 3){
        return "print/";
    }
    return "FAILED/";
}

checkSection($row)