仅在设置变量时才添加到数组

Cal*_*ert 5 php

我有这个数组,我这样做:

事实证明,当尝试将其插入数据库时​​,其中一些var并不总是设置导致未定义的索引问题?

在将数据添加到数组之前,有没有快速检查每个值的方法?

    $show_insert = array(
        'title' => $show_data['title'],
        'thetvdb_id' => $show_data['tvdbid'],
        'release_date' => $show_data['FirstAired'],
        'lastupdatethetvdb' => $show_data['lastupdatethetvdb'],
        'moviedb_id' => $show_data['moviedb_id'],
        'imdb_id' => $show_data['IMDB_ID'],
        'img_id' => $show_data['tvdbid'],
        'media_type' => 1,
        'status' => $show_data['status'],
        'length' => $show_data['runtime'],
        'network' => $show_data['network'],
        'overview' => $show_data['overview'],
        'seasons' => $show_data['seasons'],
        'episodes' => $show_data['episodes'],
        'homepage' => $show_data['homepage'],
        'last_airdate' => $show_data['last_air_date'],
        'vote_average' => $show_data['vote_average']
    );
Run Code Online (Sandbox Code Playgroud)

Pat*_*ore 6

您可以使用三元运算符isset().我们正在检查是否设置了变量和键(之前的部分?).如果设置,使用该变量(之间的部分?:),如果不是,设置为空白(之后的部分:).

三元运算符的工作方式如下:

$variable = ( comparison ? if true : if false );

从而:

$show_insert = array(
    'title' => ( isset( $show_data['title'] ) ? $show_data['title'] : '' ),
    'thetvdb_id' => ( isset( $show_data['tvdbid'] ) ? $show_data['tvdbid'] : '' ),
    [etc.]
);
Run Code Online (Sandbox Code Playgroud)

  • 使用PHP 5.3+,现在可以编写`$ show_data ['title']?:''`.更快更容易. (3认同)
  • 在 PHP 7 中,您可以使用空合并运算符,如 `$show_data['title'] ?? ''` (2认同)