我想删除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...
答案 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]
答案 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
,它将显示如下:
确保您的密钥是整数。 我认为这不会影响正常使用。