【问题标题】:Double Array, Comma Separation not accepted双数组,不接受逗号分隔
【发布时间】:2014-10-25 17:08:17
【问题描述】:

我想在一个 MainArray 中创建三个数组。

三个Array中的最后两个Array,属于一个Variable。

如何使用逗号分隔两个数组?

不会接受简单的“,”,因为 MainArray 不接受它。

我使用了explode,implode,join,但没有任何效果,系统输出逗号 但是这个逗号不被识别为编码逗号来执行两个数组的分隔。

$array0 = array("carparts"=>$carparts, "info"=>$info);


$i = 0;
while($i <= 1) {
    $i++;
    $array_season[$i] = array(
        "carpartsseason" => $carpartsseason[$i],
        "additional_s" => $info_s);
}

$MainArray = array(
    $array0, 
    $array_season
);

如您所见,最后一个 $array0 后面的逗号适用于 $MainArray。 但是如何在array_season 的每个数组后面加一个逗号?

例如我在while之后添加:

$display = '';
foreach($array_season as $new_output){
    $display .= $new_output . ',';
}

识别$new_output (. ',') 后面的逗号。 然后换了$MainArray

$MainArray= array(
    $array0, 
    $display
);

但没有成功。加入和内爆也一样。

(我研究了两天,但没有结果)

【问题讨论】:

  • 你想要实现的数据结构是什么?
  • 很难说你在问什么,但我怀疑array_merge 是你想要的。

标签: php arrays regex


【解决方案1】:

我认为这里对数组的表示、逗号的作用以及如何在数组中添加和删除项目存在一些混淆。

声明数组时使用逗号分隔不同元素,例如:

$fruits = array( 'apple', 'banana', 'carrot' );

该数组的每个元素都是一个字符串。

您还可以将包含逗号的字符串添加到数组中:

$stuff = array( 'snow, falling', 'rain, pouring', 'sun, shining' );

逗号在数组的元素内;他们对数组的结构没有特殊的权力。

当你这样做时:

$display .= $new_output . ',';

您将在$new_output 的末尾添加一个逗号,并将整个字符串添加到现有字符串$display。这不会形成数组;当您稍后将$display 添加到现有数组时,$display 仍然只是一个带有一些逗号的长字符串,有点像上面$stuff 中的字符串。

如果您想将项目添加到数组中,您可以使用array_push,或更常见的速记表示法:

# declare $display as an array
$display = array();
foreach($array_season as $new_output){
    # add $new_output to the $display array
    $display[] = $new_output;
}

我不太清楚您要查找的结构,但如果您想将 $array_season 添加到现有的$MainArray,您可以按照以下方式进行:

# no need to create $array0 unless you need it elsewhere
$MainArray = array("carparts" => $carparts, "info" => $info);

$i = 0;
while($i <= 1) {
    $i++;
    $MainArray[] = array(
        "carpartsseason" => $carpartsseason[$i],
        "additional_s" => $info_s);
}

这会将包含('carpartsseason' =&gt; $carpartsseason[$i], 'additional_s' =&gt; $info_s) 的数组直接推送到$MainArray

【讨论】:

    【解决方案2】:

    创建您的“MainArray”:

    $MainArray = array($array0);
    

    然后在您的 while 循环中将每个季节数组附加到它的末尾,并使用 $MainArray[] =

    $i = 0;
    while($i <= 1) {
        $i++;
        $MainArray[] = array(
            "carpartsseason" => $carpartsseason[$i],
            "additional_s" => $info_s);
    }
    

    【讨论】:

      【解决方案3】:

      使用array_merge:

      $MainArray = array_merge($array0, $array_season);
      

      【讨论】:

      • 感谢 Barmar 的回答,由于更好的视图,我在第一篇文章中缩短了我的代码。所以有更多的数组,它们也包含相同的名称。 array_merge 看起来非常好,但它不必要地覆盖了现有的数组。如何避免覆盖?
      • 如果您尝试组合具有相同键的数组,您期望会发生什么?一个键在一个数组中只能使用一次。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多