【问题标题】:Alternative to Explode which handles integers - str_split() cannot be used处理整数的 Explode 的替代方法 - 不能使用 str_split()
【发布时间】:2019-02-12 12:18:18
【问题描述】:

我正在尝试从数据库中获取一个值,将该值保存为一个数组,然后使用分隔符 : 展开该数组,将第一个值放入同一张表的另一列中,将其余值保留在他们来自。我认为我拥有的代码应该可以解决问题,但是我想要分解的值包含显然不能很好处理的整数(?)。我也不能使用 str_split(),因为我们最近升级到 PHP 7.2 并且不推荐使用 str_split()。我在 Google 上花了很多时间研究替代方案,但我真的不知道它们对我有什么帮助。

这是我最近的尝试,使用 str_word_count():

$queryGetStrings = 'SELECT roleText FROM table1.tempRoles';
$resultGetStrings = mysqli_query($conn,$queryGetStrings) or die("<br> <br>".$queryGetStrings."<br><br>".mysqli_error($conn));
$resultsArray = mysqli_fetch_all($resultGetStrings);

$explode_row = str_word_count($resultsArray, 1, '_123456789');

foreach($resultsArray as $key => $row) {
//Line below is from my explode attempt
     //$explode_row = explode(":", $row);

     $addSplitColumns = "UPDATE table1.tempRoles SET `user` = '" . $explode_row[0] . "'";
     $executeSplitColumns = mysqli_query($conn, $addSplitColumns) or die("<br><br>" . 

$addSplitColumns . "<br><br>" . mysqli_error($conn));

有人能推荐一种替代方法吗?我对后端编程比较陌生,所以我的存储库充其量是黯淡的。我很感激任何建议。

【问题讨论】:

  • 您是否尝试过使用整数进行爆炸 - 不知道您是从哪里得到有问题的想法。
  • 包含爆炸显然不能很好处理的整数(?)”显然?你在哪里读到的?
  • 我在这段代码中遇到的一个错误是关于整数的,这让我相信也许爆炸不是正确的方法。从你的回答来看,我认为我错了
  • 数据值实际上是什么样的?
  • 警告而不是错误如下:'警告:explode()期望参数2是字符串',它指的是$explode_row = explode(":", $row);我现在没有评论。我还注释掉了 str_word_count 行

标签: php arrays foreach explode


【解决方案1】:

你应该做的就是将explode的第二个参数转换为字符串:

$explode_row = explode(":", (string) $row);

如果它只有意义:在更新行之前,您应该验证结果数组的长度。如果数组中只有一个值,则表示该字符串没有:

【讨论】:

  • 谢谢,非常有帮助。虽然,数组的长度可以是任意长度,但总是大于 1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多