【问题标题】:How do I add an item that contains a comma to an array?如何将包含逗号的项目添加到数组中?
【发布时间】:2014-07-03 13:36:44
【问题描述】:

我有一个要循环的对象数组。我需要创建一个包含 LASTNAME、FIRSTNAME 格式的项目的数组。

当我这样做时,我会得到一个包含姓氏、名字、姓氏、名字等的数组,因为它将文本中的逗号解释为两个数组值的分隔符。

JSON(示例):

[
   {"lastname":"Levy","firstname":"Robert"},
   {"lastname":"Johannenson","firstname":"Svenn"},
   {"lastname":"Smith","firstname":"Albertson"}
]

然后

$authors = array();

for ($i = 0; $i < count($index); ++$i) {

$at = trim($index[$i]->lastname) 。 “,”。修剪($index[$i]->名字); $作者[] = $at; }

那么 $authors 包含

["Levy","Robert","Johannenson","Svenn","Smith","Albertson"]

而不是想要的:

["Levy, Robert","Johannenson, Svenn","Smith, Albertson"]

我对此并不陌生,但这让我很难过。我可以在创建数组后尝试某种字符替换(例如,使用 | 作为分隔符,然后执行 str_replace 或其他操作),但我正在寻找一种更优雅的方式。

【问题讨论】:

  • $authors 当然不包含这个。您究竟是如何获得该输出的?
  • because it interprets my comma in the text as a separator for two array values - 在字符串中?那么你的 JSON 解析器坏了。
  • 您的代码适用于我:eval.in/169154 它不会“将文本中的 [your] 逗号解释为两个数组值的分隔符”。您如何查看$authors?您在哪里看到这些结果?
  • 您在此处显示的 PHP 代码不会生成您声明的结果。你在哪里将$authors 编码为 JSON?也许错误在其他地方。简单检查一下,echo count($authors); 向您展示了什么?
  • 检查将结果解析回 json 的方式。

标签: php arrays dynamic-arrays


【解决方案1】:

这是你的例子

$index = json_decode('[
   {"lastname":"Levy","firstname":"Robert"},
   {"lastname":"Johannenson","firstname":"Svenn"},
   {"lastname":"Smith","firstname":"Albertson"}
 ]');
$authors = array();
for ($i = 0; $i < count($index); ++$i){
    $at = trim($index[$i]->lastname) . ", " . trim($index[$i]->firstname);
    $authors[] = $at;
}  

这是 $authors 的输出

array(3) {
  [0]=>
  string(12) "Levy, Robert"
  [1]=>
  string(18) "Johannenson, Svenn"
  [2]=>
  string(16) "Smith, Albertson"
}

所以一切似乎都是正确的。

能否提供完整的源代码?

【讨论】:

    【解决方案2】:

    结果在脚本中被进一步解析并导致输出中断。 PHP 正在正常工作。感谢所有快速回答。

    【讨论】:

      猜你喜欢
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 2022-10-01
      • 1970-01-01
      相关资源
      最近更新 更多