1

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

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

例如我可能有

$array=array('name'=>'Bob Smith','address'=>array('0'=>'My address'),'phone'=>'000000');

然后我将这些数据设置到另一个数组中以插入到我的数据库中。例如

$data=array('name'=>$array['name'],'address'=>$array['address']['0'],'phone'=>$array['phone']);

但是,例如,如果没有找到地址,则 $array['address']['0'] 未设置,因此使用它创建第二个数组会在 CodeIgniter 中产生错误。尽管在正常的程序编码中不会显示错误,但我认为 CI 有此错误显示为解决它是最佳实践。

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

嵌套问题是当我从数据库中获取数据以显示它时。我想分解地址的行并输出它们,但是如果没有再次设置,codeigniter 会引发错误。同样,通过条件语句很容易避免。

我的问题本质上是在数据的处理、插入和输出中,其中有许多可能会或可能不会设置的变量,我似乎需要大量的条件语句。

我想实际上这不是问题,但我希望我的代码尽可能简短。我错过了什么吗?

干杯

4

1 回答 1

6

您知道所有可能返回的密钥吗?在这种情况下

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

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

if ($key == 'address') {
    $new_data[$key] = isset($data[$key]) ? implode(', ', $data[$key]) : null;
    continue;
}
于 2012-09-14T11:11:27.850 回答