Socrata API-如何将查询中的空数据字段替换为结果数组中的空字符串

时间:2018-11-10 00:57:56

标签: socrata

我正在使用“ phpsoda”库,并尝试通过Socrata API(SODA)查询西雅图市的许可证数据集。数据:https://data.seattle.gov/Permitting/Land-Use-Permits/ht3q-kdvx

它们有几列,例如我在下面选择的列,但是在“ AppliedDate”和“ IssuedDatae”列中,该列中可能有也可能没有数据。

因此,当我尝试查看数组并将其排列到HTML表中时,我得到的某些数组(行)的元素(列)数少于其他行。事实证明,由于我不知道数组(行)中缺少哪些列,因此难以显示。

我想知道当我进行查询时,那些空字段在他们网站上的可视化表中还是在导出CSV时看起来会看起来像。查询中的这些列将返回一个空字符串(“”)到数组元素中,因此我的行和列将全部充满值。

$soql->select("PermitNum", "AppliedDate", "IssuedDate", "Description", "OriginalAddress1")
     ->where("PermitClass = 'Multifamily' OR PermitClass = 'Commercial')
     ->limit(20);

$results = $ds->getDataset($soql);

数据看起来像...

print_r($results);

Array[0] -> [Description]=>"XXXXXXX", [PermitNum]=>"123456"
Array[1] -> [Description]=>"XXXXXXX", [PermitNum]=>"234567", [AppliedDate]=>"XX/XX/XXXX"

因此第一行缺少“ AppliedDate”列,只是因为它不在数据中。

我是否需要使用循环在结果数组中手动​​进行检查并检查列名,如果循环找不到列,则插入一个空字符串?

2 个答案:

答案 0 :(得分:0)

根据我自己的建议,我能够只检查每个行键(如果缺少特定键)(array_key_exists函数),然后如果返回假,则用“”填充。

这似乎可行。

答案 1 :(得分:0)

我有同样的问题。 Socrata API 将跳过空字段或空值。意思是,如果字段为 null 或为空,结果将不会显示 field-name:'',相反,结果将只是缺少这一点,这会导致您的行变短。

这是一个烦人的错误,我必须自己修复它。如果我发现它缺少字段,我将不得不将 field-name:'' 添加到结果 json 中,这将解决您的行较短的问题。制作等长行。