过度使用条件陈述?

Tho*_*wes 1 php conditional codeigniter

我遇到了一个小问题,我只是在寻找有关最佳实践的建议.

我有一个脚本从外部网页获取一些数据.有时这些数据不完整.

例如我可能有

$array=array('name'=>'Bob Smith','address'=>array('0'=>'My address'),'phone'=>'000000');
Run Code Online (Sandbox Code Playgroud)

然后我将此数据设置为另一个数组以插入到我的数据库中.例如

$data=array('name'=>$array['name'],'address'=>$array['address']['0'],'phone'=>$array['phone']);
Run Code Online (Sandbox Code Playgroud)

但是,如果没有找到地址,则不设置$ array ['address'] ['0'],因此使用它创建第二个数组会在CodeIgniter中创建错误.虽然在正常的程序编码中没有显示错误,但我认为CI有这个错误表明解决它是一种最佳实践.

所以..我假设解决这个问题的最好方法是使用条件并检查$ array ['address'] ['0']是否在添加到$ data数组之前设置.那是对的吗?如果不是,则将null插入数据库.

嵌套问题是当我从数据库获取数据以显示它时.我想爆炸地址的行并输出它们,但如果没有再次设置,则codeigniter会抛出错误.同样,通过条件语句可以轻松避免.

我的问题主要在于处理,插入和输出数据,其中有许多变量可能会或可能不会设置,我需要看似有负载和条件语句的负载.

我认为实际上这不是问题,但我喜欢我的代码尽可能短而简洁.我错过了什么吗?

干杯

Nik*_*ess 6

你知道可以退回的所有钥匙吗?在这种情况下

$allowed_keys = array('name', 'address');
$new_data = array();
foreach ($allowed_keys as $key) {
    $new_data[$key] = isset($data[$key]) ? $data[$key] : null;
}
Run Code Online (Sandbox Code Playgroud)

您还可以在foreach循环中为某些键添加格式

if ($key == 'address') {
    $new_data[$key] = isset($data[$key]) ? implode(', ', $data[$key]) : null;
    continue;
}
Run Code Online (Sandbox Code Playgroud)