将任何空输入转换为空字符串

时间:2018-05-04 07:11:45

标签: php mysql

所以我有一个while循环,我在$array_collections里面给了每个循环35个值,如果它等于NULL,我想验证每个值然后给它一个空字符串。我做到了:

while ($array_collections = tep_db_fetch_array($query)) { 

    foreach ($array_collections as $key => $value) {
        if (is_null($value)) {
             $array_collections[$key] = "";
        }
    }

    $docs[] = new \Elastica\Document('', \Glam\HttpUtils::jsonEncode(
        array(
            'X' => $array_collections['X'],
            ... etc
    )));
}

这在技术上应该可以工作,但循环超过500K元素,因此它很大,而且对于我们将它放入表中的每个元素,问题是我在某些时候耗尽了内存。那么是否有另一种简单的方法可以为任何给定的NULL值提供一个没有循环的空字符串?

3 个答案:

答案 0 :(得分:1)

好吧,你可以把空字符串的NOT NULL约束作为DEFAULT值放在DB中,这样你就不需要在php中使用循环来做到这一点,但是如果你不想改变数据库设计那么你可以使用COALESCE你的查询

select COALESCE(yourfield,'') from table

它会将NULL值转换为空字符串

答案 1 :(得分:0)

您可以使用array_map函数将空值替换为空字符串。

  $array_collections=array_map(function($ar)
  {
    if(isset($ar) && $ar!=null){
      return $ar;
    }
    return '';
  },$array_collections);

上面的代码将所有空值替换为空字符串。不需要循环。

答案 2 :(得分:0)

你可以使用array_walk:

function replace_null(&$lsValue, $key) {
     if(is_null($lsValue)) {
         $lsValue = "";
     }
}

array_walk($array_collections, 'replace_null');