如何将isset与is_array结合使用

时间:2013-05-05 20:14:03

标签: php isset

我正在使用is_array函数,但也需要使用isset,就像没有选择任何内容一样,我得到一个未定义的索引错误。

我还在学习PHP所以不确定如何将我写的内容与isset结合起来,我的代码在下面

$special = $_POST['special'];
if (is_array($_POST['special'])) {
    $special = implode(",", $_POST['special']);
} else {
    $special = $_POST['special'];
}

非常感谢

4 个答案:

答案 0 :(得分:4)

您不需要使用is_array,您可以将所有内容强制为数组...

$special = isset($_POST['special']) ? $_POST['special'] : null;
$special = implode(",", (array) $special);

答案 1 :(得分:2)

您正尝试将$_POST['special']的值分配给$special是否已设置。这就是你收到错误的原因。以下可能有效:

$special = ""; 
if (isset($_POST['special'])) {
    if(is_array($_POST['special'])) {
        $special = implode(",", $_POST['special']);
    } else {
        $special = $_POST['special'];
    }
} 

如果$_POST['special']是一个数组,它将使用implode将其转换为字符串并将其分配给$special

如果它不是数组,但仍然设置,则将值赋给$special

答案 2 :(得分:0)

您正在尝试分配$_POST数组的值,无论它是否已设置。并告诉计算机是否设置了$_POST['special'],然后将其分配给$special,如果未设置,则再次将其分配给$special。然后你就会得到那个错误。

你的if语句没有意思。

$special = "";
$pos = false;
if (isset($_POST['special'])) 
{
    $pos = strpos($_POST['special'], ',');
    if($pos !== false)
    {
        $special = implode(",", $_POST['special']);
    }
    else
    {
        $special = $_POST['special'];
    }
}

答案 3 :(得分:0)

如果不存在值$_POST[ 'special' ],则第一行会抛出错误,因为将$_POST[ 'special' ]分配给$special假设存在值。做你想要的正确方法如下:

if ( isset( $_POST[ 'special' ] ) )
    $special = implode( ',', $_POST[ 'special' ] );
else
    $special = null;

使用上面的代码,您可以稍后在脚本中使用严格的比较检查$special是否为null。如果是,则未设置$_POST[ 'special' ]。否则,您可以假设它包含内爆的字符串值。

当然,您可以添加更多检查,例如确保值不为空,等等。

相关问题