在php中将数组转换为带双引号的字符串

问题描述 投票:0回答:6

我有以下数组

$type=Array(
[0] => PL
[1] => LWP
[2] => Carry Forward
[3] => SL
);

我想将它转换成String。我使用implode函数来转换它。

$newarray=implode(",", $type);

但它返回如下字符串

PL,LWP,Carry Forward,SL

我想要像下面这样的字符串

("PL","LWP","Carry Forward","SL")

请帮助我...

php
6个回答
7
投票

试试这个;)

$newarray='("'.implode('","', $type).'")';

2
投票

如果你想在生成的字符串中使用双引号,你可以用

implode('", "', $type)
而不是
implode(", ", $type)
来替换 implode 的胶水 这些双引号不会出现在字符串的第一个和最后一个值中。因此,在 implode 的开头添加
("
,在结尾添加
")
。 请参阅下面的代码了解完整语法

<?php
    $type=Array(
    [0] => PL
    [1] => LWP
    [2] => Carry Forward
    [3] => SL
    );
    //Convert array to string with double quotes for each value
    $newarray='("'.implode('", "', $type).'")';
    echo $newarray;
    ?>

1
投票

您可以尝试使用

","
胶水并添加前缀
("
和后缀
")

$newarray= '("' . implode('","', $type) . '")';

当您有空数组时,您还应该考虑边缘情况,因为您可能希望对其进行稍微不同的处理。在这种情况下,结果会是

("")


0
投票

就目前情况而言,你的问题是无法回答的。您正在尝试创建机器可解析的数据表示形式,但没有提供有关如何解析数据的足够信息。

例如如果一个元素已经包含双引号怎么办 - 您需要转义它。但你用什么方法来逃避呢?

例如引用数值可能会影响数据使用者对其的解释(尽管您的示例不包含数值数据)。

您可以考虑使用 fputcsv(); (但这只会写入stream - 所以如果您在其他地方需要数据,那么您需要捕获流。


0
投票

当前答案忽略了

$type
为空的边缘情况,返回
("")
而不是
()
,这可能就是您想要的。

在添加括号之前,您可能需要用引号将每个元素括起来,如下所示:

$type = array("PL", "LWP", "Carry Forward", "SL");
$quoted = array_map( function($element) { return "\"${element}\""; }, $type );
$newarray = '(' . implode(',', $quoted) . ')';

0
投票

sprintf("'%s'", implode("','", $type))

© www.soinside.com 2019 - 2024. All rights reserved.