Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP中的函数从数组中获取值_Php_Arrays - Fatal编程技术网

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

通过PHP中的函数从数组中获取值,php,arrays,Php,Arrays,我的PHP代码中有一个问题。我得到了一个这样的数组作为示例(这个数组是使用数据库中的数据动态创建的) 当我用 foreach ($db_res as $key => $value ) { echo $key.' - '.$value.' , '; } 它正在显示这些值什么是OK 借方id-1020,用户id-495,b2b或b2c-b2c 现在我有了一个函数来测试数组中的一些数据是否被设置,并从这个$db\u res数组的$u POST数组返回一些值 function is

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

当我用

foreach ($db_res as $key => $value )
{
   echo $key.' - '.$value.' , ';
}
它正在显示这些值什么是OK

借方id-1020,用户id-495,b2b或b2c-b2c

现在我有了一个函数来测试数组中的一些数据是否被设置,并从这个$db\u res数组的$u POST数组返回一些值

    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.' , ');
    }
这是我的输出

借方id-1020,isnull:,用户id-495,isnull:,b2b或b2c-b2c,isnull:

我做错了什么?

使用以下代码:

$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.' , ';
}

如前所述,变量
$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.' , ');
    }
?>

您可以用任何方式编写

        $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.' , ';
        }

但是我更喜欢使用第一个。

您需要在isnull\u post()函数中做一些更改,因为您的$db\u 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.' , ';
        }

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

$db\u res
在函数中不可访问
isnull\u post
您需要将其与键一起传递。或者您可以使用
全局$db\u res
作为函数的第一行
isnull\u post
那么
$db\u res
值呢!?你已经在函数中写过了!?它是全局变量吗!?只需尝试在该函数中打印该值,以便您知道它是否将返回该值!?它将打印什么数组让我知道。请不要做Amit建议的事情你好Phil,为什么不做Amit建议的事情,这是我所期望的答案所以这里的$也是数组吗???@CodeLover“*$\u POST:通过HTTP POST方法传递到当前脚本的变量的关联数组。这是一个“超全局”变量或自动全局变量。这仅仅意味着它在整个脚本的所有作用域中都可用。不需要做全局$variable;在函数或方法中访问它。“-是的,我明白了............................................................................................................它是基于TS的代码的,如果函数是这样调用的
isnull.post('user\u id')
函数将首先检查
已设置。此函数的用途是什么,我不知道…你问TS。这是你想知道的吗?还是你指的是其他东西?我问的是其他东西。我只需要知道为什么在这里添加($\u POST[$naam])。。
 $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.' , ';
        }