首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组合并为[PHP]

数组合并为[PHP]
EN

Stack Overflow用户
提问于 2019-06-14 18:16:19
回答 3查看 44关注 0票数 1

X倍for过程完成。每次for处理过程都会添加新的数组数据。

代码语言:javascript
复制
 $input_array = array("success"=>true ,'ab' => 2,'def' => 1);

for ($i = 0; $i <= 6;$i++) {
    $data = [
        'lg_' . $i => 'LG: T-' . $i
    ];
    $arrayMerging = array_merge($input_array, $data);
}

print_r($arrayMerging);

数组(success => true,ab => 2 def => 1 leg_6 => LG: T-6)

它只是增加了最后一部分(6)。数组中不存在1,2,3,4,5部分。可能是什么原因?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-14 18:28:04

您只看到循环中的最后一个键的原因是结果/累加器数组($arrayMerging)从未被分配,所以每次迭代都从头开始。

你的意思可能是:

代码语言:javascript
复制
<?php

$input_array = ["success" => true ,'ab' => 2,'def' => 1];
$arrayMerging = $input_array;

for ($i = 0; $i <= 6; $i++) {
    $data = ["lg_$i" => 'LG: T-' . $i];
    $arrayMerging = array_merge($arrayMerging, $data);
}

print_r($arrayMerging);

或更明确的是:

代码语言:javascript
复制
<?php

$input_array = ["success" => true , "ab" => 2, "def" => 1];
$merged = $input_array;

for ($i = 0; $i <= 6; $i++) {
    $merged["lg_$i"] = "LG: T-$i";
}

print_r($merged);

我们直接分配财产的地方。

输出:

代码语言:javascript
复制
Array
(
    [success] => 1
    [ab] => 2
    [def] => 1
    [lg_0] => LG: T-0
    [lg_1] => LG: T-1
    [lg_2] => LG: T-2
    [lg_3] => LG: T-3
    [lg_4] => LG: T-4
    [lg_5] => LG: T-5
    [lg_6] => LG: T-6
)
票数 1
EN

Stack Overflow用户

发布于 2019-06-14 18:27:38

这是因为您没有将结果合并回最终数组。试试这个:

代码语言:javascript
复制
$input_array = array("success"=>true ,'ab' => 2,'def' => 1);

for ($i = 0; $i <= 6;$i++) {
    $data = [
        'lg_' . $i => 'LG: T-' . $i
    ];
    $input_array = array_merge($input_array, $data);
}

print_r($input_array);

另一个例子:http://sandbox.onlinephpfunctions.com/code/052c3edaca2e8ac7b819201eb5bb3b61d384bca5

票数 1
EN

Stack Overflow用户

发布于 2019-06-14 18:27:03

array_push这样做,

代码语言:javascript
复制
<?php
$input_array = array("success"=>true ,'ab' => 2,'def' => 1);

for ($i = 0; $i <= 6;$i++) {
    $data = [
        'lg_' . $i => 'LG: T-' . $i
    ];
    array_push($input_array, $data);
}

print_r($input_array);
?>

演示: https://3v4l.org/CImYY

如评论所述:

代码语言:javascript
复制
<?php
$input_array = array("success"=>true ,'ab' => 2,'def' => 1);

for ($i = 0; $i <= 6;$i++) {
    $data = [
        'lg_' . $i => 'LG: T-' . $i
    ];
  $input_array = array_merge($input_array, $data); // see this line
}

  print_r($input_array);
?>

演示: https://3v4l.org/R57v6

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56603310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档