如果使用 php (laravel) 未定义数组元素,则将 null 插入数据库

Posted

技术标签:

【中文标题】如果使用 php (laravel) 未定义数组元素,则将 null 插入数据库【英文标题】:insert null to database if array element is undefined using php (laravel) 【发布时间】:2014-06-26 09:08:07 【问题描述】:

我正在尝试将数组插入到表中,但数组的某些元素未定义。 我想在元素未定义的地方插入 null 。 数组如下:

[0]=>Array
 (
   [0] => Array
    (
        [Id] => 120
        [Title] => php
        [Year] => 2011
        [Version] =>5.5
    )

   [1] => Array
    (
        [Id] => 121
        [Title] => javascript
        [Year] => 2010
        [Version] =>7
    )

 )
 [1]=>Array
 (
   [0] => Array
    (
        [Id] => 1
        [Title] => html
        [Author] => peter
    )

   [1] => Array
    (
        [Id] => 1
        [Title] => Asp
        [Author] => john
    )

 )
  [2]=>Array
 (
   [0] => Array
    (
        [Id] => 1
        [Title] => Html
        [Year] => 2011
        [Page] =>40
    )

   [1] => Array
    (
        [Id] => 1
        [Title] => Asp
        [Year] => 2010
        [Page] =>220
    )

 )

table 有 6 个字段 id 、 title 、 year 、 author 、version 和 page 。

 $this ->table->create(array(
    'id'       => $data['Id'] ,
   'title'     => $data['Title'] ,
   'year'      => $data['Year'] ,
   'author'    => $data['Author'],
   'version'   => $data['Version'] ,
   'page'      => $data['Page'] ,
   ))

如何在变量未定义时向表中插入空值。例如喜欢 未定义($数据['版本'])?空 : $data['版本'] !!!!!!一个php函数或任何可能的解决方案? 谢谢

【问题讨论】:

使用列上的 DEFAULT NULL 子句创建表。 列已经 ->nullable() 【参考方案1】:

您可能能够:

foreach($data as $row)

    $info = array(
       'id'       => $this->getData($row, 'Id'),
       'title'     => $this->getData($row, 'Title'),
       'year'      => $this->getData($row, 'Year'),
       'author'    => $this->getData($row, 'Author'),
       'version'   => $this->getData($row, 'Version'),
       'page'      => $this->getData($row, 'Page'),
    );

    $this->table->create(array_filter($info));


public function getData($data, $key)

    return isset($data[key]) ? $data[key] : null;

【讨论】:

只插入第一个子数组,但不是全部。 谢谢安东尼奥。它工作得很好。您的代码中有错字只需将 $data 更改为 $row 。

以上是关于如果使用 php (laravel) 未定义数组元素,则将 null 插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

未找到 Laravel 5.8 自定义命令

PHP 致命错误:未捕获的错误:使用 Laravel 5.8 和 PHP 7.4 调用未定义函数 Whoops\Exception\xdebug_is_enabled()

数组长度在 Javascript 中返回未定义 - Laravel + Vue

Laravel PackageManifest.php 第 131 行:未定义索引:名称

AWS EB 未定义 RDS_HOSTNAME,数据库主机数组为空

Laravel PackageManifest.php:未定义索引:名称