我遇到了一个小问题,我只是在寻找有关最佳实践的建议。
我有一个脚本从外部网页获取一些数据。有时这些数据不完整。
例如我可能有
$array=array('name'=>'Bob Smith','address'=>array('0'=>'My address'),'phone'=>'000000');
然后我将此数据设置为另一个数组以插入到我的数据库中。 E.G。
$data=array('name'=>$array['name'],'address'=>$array['address']['0'],'phone'=>$array['phone']);
但是,如果没有找到地址,则不设置$ array ['address'] ['0'],因此使用它创建第二个数组会在CodeIgniter中创建错误。虽然在正常的程序编码中没有显示错误,但我认为CI有这个错误表明解决它是一种最佳实践。
所以..我认为解决这个问题的最佳方法是使用条件并检查$ array ['address'] ['0']是否在添加到$ data数组之前设置。那是对的吗? 如果不是,则将null插入数据库。
嵌套问题是当我从数据库中获取数据以显示它时。 我想爆炸地址的行并输出它们,但如果没有再次设置,则codeigniter会抛出错误。同样,通过条件声明可以轻松避免。
我的问题主要在于处理,插入和输出数据,其中有许多变量可能会或可能不会被设置,我需要看似有负载和条件语句的负载。
我认为实际上这不是问题,但我喜欢我的代码尽可能短而简洁。我错过了什么吗?
干杯
答案 0 :(得分:6)
您知道可以退回的所有可能钥匙吗?在那种情况下
$allowed_keys = array('name', 'address');
$new_data = array();
foreach ($allowed_keys as $key) {
$new_data[$key] = isset($data[$key]) ? $data[$key] : null;
}
您还可以在foreach-loop
中为某些键添加格式if ($key == 'address') {
$new_data[$key] = isset($data[$key]) ? implode(', ', $data[$key]) : null;
continue;
}