如果已定义,则将其添加到数组中 -PHP

4

i have this code

$courses = array("name_lic", "name_mes", "name_dou");

如果已经定义了name_lic, name_mes, name_douc,我该如何将它们添加到数组中?

例如:如果已经定义了name_lic,则将其插入数组中;如果未定义或为空,则不插入name_mes,同样也不插入name_dou

基本上,数组中只能包含已定义的字符串。

在我的示例中应该是这样的:

$courses = array("name_lic");

“Defined strings” 是什么意思? - rid
仅将用户插入值的字段添加到数组中,即在我的情况下不为空的字段。 - anvd
“Inserted by user” 是指 “在 $_POST 数组中存在吗?” - Phil
4个回答

4
我猜“用户插入”指的是由于表单提交而存在于$_POST中的值。
如果是这样,请尝试以下操作:
$courses = array("name_lic", "name_mes", "name_dou");
// Note, changed your initial comma separated string to an actual array

$selectedCourses = array();
foreach ($courses as $course) {
    if (!empty($_POST[$course])) {
        $selectedCourses[] = $course;
    }
}

2

您是否是想表达这样的意思:

if (isset($name_lic)) { 
    $courses[] = $name_lic;
}

...等待翻译...


1

isset函数会在变量存在且不为NULL时返回TRUE,但如果变量的值是一个空字符串,这显然不是你想要的结果。建议使用

if (!empty($_POST['name_lic'])){
    $courses[] = $_POST['name_lic'];
}

// etc

例如,如果您想对$_POST的所有值执行此操作:
foreach ($_POST as $key => $value){
    if (!empty($value)){
        $courses[$key] = $value;
    }
}

1

首先,如果你的代码是:

$courses = array("name_lic, name_mes, name_dou");

那么 $courses 是一个只有一个键的数组,你应该像这样删除 " ":

$courses = array("name_lic", "name_mes", "name_dou");

现在如果你想知道数组中是否包含一个值为"name_lic"的键,你应该像这样使用in_array()函数:
if (in_array("name_lic", $courses)) {
  //Do stuff
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接