通过PHP中的函数从数组中获取值

时间:2014-05-01 05:47:41

标签: php arrays

我的PHP代码有问题。我得到了一个这样的数组作为例子(这个数组是用数据库中的数据动态创建的。)

$db_res =array('debiteur_id'=>'1020','user_id'=>'495','b2b_or_b2c'=>'B2C');

当我用

显示值时
foreach ($db_res as $key => $value )
{
   echo $key.' - '.$value.' , ';
}

显示这些值是否正常

  

debiteur_id - 1020,user_id - 495,b2b_or_b2c - B2C

现在我有一个函数来测试是否设置了数组中的某些数据,并从$ _POST数组的$ db_res数组中返回一些值

    function isnull_post($naam)
    {
        if (isset($db_res[$naam]))
            return($db_res[$naam]);
        else
        {
            if (isset($_POST[$naam]))
                return($_POST[$naam]);
            else
                return('');
        }
    }

当我使用以下代码显示我的数组时

    foreach ($db_res as $key => $value )
    {
        echo $key.' - '.$value.' , ';
        $val = isnull_post($key);
        echo ('isnull : '.$val.' , ');
    }

这是我的输出

  

debiteur_id - 1020,isnull:,user_id - 495,isnull:,b2b_or_b2c - B2C,isnull:

我做错了什么?

4 个答案:

答案 0 :(得分:1)

您需要在isnull_post()函数中进行一些更改,因为$ db_res数组范围不是全局的。因此,在要将其用作全局变量的函数中使其成为全局变量。

function isnull_post($naam)
    {   
            global $db_res;

            if (isset($db_res[$naam]))
                return($db_res[$naam]);
            else
            {
                if (isset($_POST[$naam]))
                    return($_POST[$naam]);
                else
                    return('');
            }
    }

您也可以将数组传递给函数:

 $db_res =array('debiteur_id'=>'1020','user_id'=>'495','b2b_or_b2c'=>'B2C');

    function isnull_post($naam,$db_res)
        {   
            if (isset($db_res[$naam]))
            return($db_res[$naam]);
            else
            {
                if (isset($_POST[$naam]))
                    return($_POST[$naam]);
                else
                    return('');
            }
        }

        foreach ($db_res as $key => $value )
        {   
            $val = isnull_post($key,$db_res);
            echo $key.' - '.$val.' , ';
        }

如果您对使用此数组的要求仅适用于此函数,则可以将其传递给函数,但如果其他函数需要此数组,则必须将数组全局定义为该函数的体范围。

答案 1 :(得分:0)

使用以下代码:

$db_res =array('debiteur_id'=>'1020','user_id'=>'495','b2b_or_b2c'=>'B2C');
function isnull_post($naam,$db_res)
{   
    if (isset($db_res[$naam]))
    return($db_res[$naam]);
    else
    {
        if (isset($_POST[$naam]))
            return($_POST[$naam]);
        else
            return('');
    }
}

foreach ($db_res as $key => $value )
{   
    $val = isnull_post($key,$db_res);
    echo $key.' - '.$val.' , ';
}

答案 2 :(得分:0)

正如已经注释的那样,变量$db_res在您的函数中无法访问,您可以将其设置为全局(我不喜欢),或者将其传递给它,就像这样:

<?php
    function isnull_post($naam, $db_res)
    {
        if (isset($db_res[$naam]))
            return($db_res[$naam]);
        else
        {
            if (isset($_POST[$naam]))
                return($_POST[$naam]);
            else
                return('');
        }
    }


    foreach ($db_res as $key => $value )
    {
        echo $key.' - '.$value.' , ';
        $val = isnull_post($key, $db_res);
        echo ('isnull : '.$val.' , ');
    }
?>

答案 3 :(得分:0)

你可以写任何一种方式,

        $db_res =array('debiteur_id'=>'1020','user_id'=>'495','b2b_or_b2c'=>'B2C');
        function isnull_post($naam)
        {   
            global $db_res;
            if (isset($db_res[$naam]))
            return($db_res[$naam]);
            else
            {
                if (isset($_POST[$naam]))
                    return($_POST[$naam]);
                else
                    return('');
            }
        }

        foreach ($db_res as $key => $value )
        {   
            $val = isnull_post($key);
            echo $key.' - '.$val.' , ';
        }

或者按照以下步骤进行..

            $db_res =array('debiteur_id'=>'1020','user_id'=>'495','b2b_or_b2c'=>'B2C');
        function isnull_post($naam,$db_res)
        {   
            if (isset($db_res[$naam]))
            return($db_res[$naam]);
            else
            {
                if (isset($_POST[$naam]))
                    return($_POST[$naam]);
                else
                    return('');
            }
        }

        foreach ($db_res as $key => $value )
        {   
            $val = isnull_post($key,$db_res);
            echo $key.' - '.$val.' , ';
        }

但我更喜欢使用第一个。