我的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:
我做错了什么?
答案 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.' , ';
}
但我更喜欢使用第一个。