【问题标题】:PHP string larger than 2048 charatcter turns tu null [closed]大于 2048 个字符的 PHP 字符串变为 null [关闭]
【发布时间】:2019-02-04 07:02:20
【问题描述】:

与文档相矛盾的是,在接下来的循环中(我正在创建一个选择),当变量 $retval 达到 2048 个字符时,它被设置为 null

    foreach ($cache_ecmcategories as $category) {
        $retval.= '<option value="'.$category['rowid'].'"';
        if (($isfilter ? $category['label'] : $category['rowid']) == $defaulttx)
            $retval.= ' selected="selected"';
        $retval.= '>'.$category['label'].'</option>'; <== This line generate the problem
    }

另外,把PHP版本从5.6.25改成7.0.10,问题依旧

这种奇怪行为的原因是什么?

【问题讨论】:

  • 你的内存大小是多少?
  • 你的 php error_log 说什么?我有一个超过 2048 的选项,它可以工作。
  • 文档的哪一部分相矛盾?
  • 我读到字符串可以达到 2GB。

标签: php string string-length


【解决方案1】:

我无法使用以下脚本在我的服务器上重现您的问题:

<?php
$foo='';
for($i=0; $i < 1000; $i++) $foo .= "cur:$i ";
var_dump($foo);

即使是额外的$foo .= NULL; 也不会触发我的错误。 您真的确定该错误发生在您发布的代码上吗?您是否尝试添加额外的调试语句?

【讨论】:

  • 恕我直言 - 这应该是一个评论,因为它要求澄清。
  • 是的,我确定,因为我使用逐行调试器。我做了更深入的测试,我可以说添加 2049 字符时出现错误(字符串为 null)。
猜你喜欢
  • 2022-01-04
  • 2015-10-22
  • 2011-12-17
  • 2020-09-24
  • 2014-10-17
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多