如何在变量数据中添加逗号?

时间:2018-09-30 09:00:26

标签: php laravel-5

我想删除key并在每个值后添加comma,我对foreach感到厌倦,但我不愿屈服。

$data = array:195 [▼
          0 => 26404.759765625
          1 => 26390.619140625
          2 => 26391.9609375
          3 => 26397.6796875
          4 => 26421.630859375
          5 => 26414.880859375
          6 => 26409.33984375
          7 => 26410.509765625
          8 => 26403.220703125
          9 => 26386.029296875
          10 => 26400.109375
          11 => 26412.369140625
          12 => 26408.099609375
          13 => 26418.029296875
          14 => 26422.80078125

我正在尝试以下循环:

foreach($data  as $key=>$value){
$dataes = $value
}
DD($dataes);

预期结果应如下所示:

    array:195 [▼
         26404.759765625,
         26390.619140625,
         26391.9609375,
         26397.6796875,
    so on...

4 个答案:

答案 0 :(得分:2)

要回显以逗号分隔的数据,可以使用implode,它采用一个数组,并在每个数组项之间使用“胶水”并构建一个字符串。

echo implode(",<br>", $data);

这将为您每行提供一个项目,并在每个项目之后添加一个逗号。

在这里您可以看到代码的输出。
https://3v4l.org/AHvu3C
请注意,这是一个命令行,因此html将显示为文本。
在PHP解释器和浏览器上运行相同的代码将使其正确的html。


由于您已经制作了API,所以我假设您需要json_encode。
Json_encode将数组作为字符串返回,可以轻松接收和解码。

echo json_encode( $data);
//[26404.759765625,26390.619140625,26391.9609375,26397.6796875,26421.630859375,26414.880859375,26409.33984375,26410.509765625,26403.220703125,26386.029296875,26400.109375,26412.369140625,26408.099609375,26418.029296875,26422.80078125]

https://3v4l.org/6MMZu

答案 1 :(得分:1)

要简单地将输出用逗号分隔,可以使用implode函数。

function ExecuteAction(entitySet, entityId, actionName, Parameters, successCallBack, ErrorCallBack, isAsync) {
debugger;
var clientUrl = Xrm.Page.context.getClientUrl();
var isAsync = isAsync || false;
var result = {};
entityId = entityId.replace('{', '').replace('}', '');
var req = new XMLHttpRequest();
req.open("POST", clientUrl + "/api/data/v8.1/" + entitySet + "(" + entityId + ")/Microsoft.Dynamics.CRM." + actionName, isAsync);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
        req.onreadystatechange = null;
        var s = this.status;
        if (s >= 200 && s < 300) { //success 
            result.status = true;
            result.data = this.response;
            if (successCallBack) 
                successCallBack();

        } else if (s >= 400 && s < 500) { // client error 
            result.status = false;
            console.log("Client error");
            result.error = JSON.parse(this.response).error;
            console.log(result.error);
            console.log(result.error.message);
            if (ErrorCallBack)
                ErrorCallBack(result);


        } else if (s >= 500) { //server error 
            result.status = false;
            console.log("Server error");
            result.error = JSON.parse(this.response).error;
            console.log(result.error);
            console.log(result.error.message);
            if (ErrorCallBack) 
                ErrorCallBack(result);

        }

if (Parameters == "" || Parameters == null) {
    req.send();
} else {
    req.send(JSON.stringify(Parameters));
}

return result;
  

返回一个字符串,其中包含所有数组的字符串表示形式   元素以相同的顺序排列,每个元素之间都有粘合线。

尝试以下代码:

string implode ( string $glue , array $pieces )

答案 2 :(得分:0)

所以您需要做:

$dataes[] = implode(",\n", $data);

这会将$ data的值连接在一个字符串中(带有新行)。

答案 3 :(得分:0)

老实说,我认为您的代码很好,您无需删除这些键。

在php中,键值是数组。

如果您的代码是这样的:

$b=[0 => 26404.759765625, 3 => 26390.619140625, 4 => 26391.9609375]
dd($b)

# In postman, it will show like this.
$data = array:3 [▼
      0 => 26404.759765625,
      3 => 26390.619140625,
      4 => 26391.9609375
]

然后重置这些键,它将变成普通数组。

但是在邮递员中,当您使用dd($b)时,它仍会显示那些键。

$data = array:3 [▼
      0 => 26404.759765625,
      1 => 26390.619140625,
      2 => 26391.9609375
]

您可以使用php artisan tinker,它将显示如下:     enter image description here

确保您的密钥是整数。 我认为这不会影响正常使用。