您好我试图从数组中删除所有空值,但在我的数据库中不是这个,记录是:数组而不是实际值。
$stmt->bindValue(':number', $this->number, PDO::PARAM_STR);
我正在使用的是:
if( isset( $_POST['number']))
{ $this->number = array_filter($_POST['number']);
}
数组:
number[0] 32321
number[1]
number[2]
预期结果是一个数组或变量,其中只有一个值不为空number[0] 32321
欢迎任何帮助。
答案 0 :(得分:1)
array_filter将始终返回一个元素数组,它将删除空值但在将其分配给$this->number
之前,您必须遍历返回的数组,然后插入到DB。或者你可以内爆该数组并将其作为csv存储在DB中。
答案 1 :(得分:1)
您看到"Array"
(PHP中数组的标准字符串表示形式),因为array_filter
返回一个数组,而不是单个值,因此$this->number
中的内容不是32321
{1}},它是array(32321)
。如果您更改错误报告设置,您将看到有关数组到字符串转换的注意事项。
您可以将分配添加到if
条件(如果您不喜欢,则添加另一个嵌套)。然后,如果array_filter
返回一个空数组,则不会进入if
块。
if (isset( $_POST['number']) && $this->number = array_filter($_POST['number'])) {
// insert values from $this->number into your database
}
在if
块中,当您尝试插入值时,为了不像您当前获得的"Array"
,您可以通过循环$this->number
进行多次插入数组并为每个项执行准备好的语句:
foreach ($this->number as $number) {
$stmt->bindValue(':number', $number, PDO::PARAM_STR);
$stmt->execute();
}
或者,如果您只想在$_POST['number']
中插入第一个内容并忽略任何其他非空值,则可以绑定数组中的第一个值:
$stmt->bindValue(':number', reset($this->number), PDO::PARAM_STR);