通过PHP中的函数从数组中获取值
我的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
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.' , ';
}