首页 > 解决方案 > 将任何空输入转换为空字符串

问题描述

所以我有一个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的值一个空字符串而不循环?

标签: phpmysql

解决方案


好吧,您可以将空字符串的 NOT NULL 约束作为 DEFAULT 值放在数据库中,这样您就不需要在 php 中使用循环执行此操作,但是如果您不想更改数据库设计,那么您可以在查询中使用 COALESCE

select COALESCE(yourfield,'') from table

它将NULL值转换为空字符串


推荐阅读