我有这个阵列,我这样做:
原来设置的一些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']
);
答案 0 :(得分:5)
您可以使用ternary operator和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.]
);
答案 1 :(得分:2)
扩展另一个答案:
我会使用一个函数来简化所有输入,同样,我会使用empty()
而不是isset()
但是如果你只是将它设置为一个空字符串我想这部分不是很重要。
function checkVal($val, $show_data){
return empty($show_data[$val]) ? "" : $show_data[$val];
}
$show_insert = array(
'title' => checkVal('title',$show_data),
'thetvdb_id' => checkVal('tvdbid',$show_data)
);
答案 2 :(得分:0)
if (isset($show_data['title']) {
$show_insert[title] = $show_data['title'];
}
这基本上意味着如果$show_data[title]
已初始化,那么它会将其添加到键'title'下的$show_insert
数组中,如果尚未设置,则不会发生任何事情,因此会有没有数组键'title'
或者你可以拥有大型数组:
public function check_set($array, $variable = null, $key_name)
if ($variable != null) {
$array[$key_name] = $variable;
}
check_set($show_insert, $show_data[title], $title = '"title"');