【问题标题】:Merge two array with index in php在php中合并两个带有索引的数组
【发布时间】:2016-10-08 08:32:43
【问题描述】:

我有这样的代码

 foreach($tests as $test){
         if($test=='true') {
                $temp[]['name']='a';
                $temp[]['child']='b';
             }
            else{
                $temp[]['name']='c';
                $temp[]['child']='d';
            }
        }
 prtint_r($temp);

结果是:

[{"name":"c"},{"child":"d"},{"name":"c"},{"child":"d"},{"name":" a"},{"child":"b"},{"name":"c"},{"child":"d"}]

但我想要这个结果:

[[{"name":"c"},{"child":"d"}],[{"name":"c"},{"child":"d"}],[{ "name":"a"},{"child":"b"}],[{"name":"c"},{"child":"d"}]]

【问题讨论】:

  • 发布您的数组$tests...

标签: php arrays merge array-merge


【解决方案1】:
$i = 0;
foreach ($tests as $test) {
  if ($test == 'true') {
    $temp[$i] = array('name' => 'a', 'child'='b');
  } else {
    $temp[$i] = array('name' => 'c', 'child'='d');
  }
  $i++;
}
prtint_r($temp);

【讨论】:

    【解决方案2】:

    在分配值时重复使用您的 $tests 键以获得相同的键...

    foreach($tests as $k=>$test){
         if($test=='true') {
                $temp[$k]['name']='a';
                $temp[$k]['child']='b';
             }
            else{
                $temp[$k]['name']='c';
                $temp[$k]['child']='d';
            }
        }
        var_dump($temp);
    

    【讨论】:

      【解决方案3】:

      很简单,每次 php 读取 $array[] 时都会将其读取为新的数组键,

      $array[] = 1; //Key 0
      $array[] = 2; //Key 1
      $array[] = 3; //Key 2
      $array[] = 4; //Key 3
      

      要分配/控制键,您可以使用多种方法,其中一种更简单。

      $i = 0;
      foreach($array as $value){
          $array[$i]['name'] = 'Jamie'; 
          $array[$i]['age'] = 1;
      
          $i++;
      }
      

      每次 foreach 循环运行时,$i 变量都会增加,并在每次运行时为您的数组分配一个新键。

      结果:

      Array
      (
          [0] => Array(
             [name] => Jamie
             [age] => 1
          )
          [1] => Array(
             [name] => Jamie
             [age] => 1
          )   
      )
      

      【讨论】:

        【解决方案4】:

        一次添加数组而不是两项

        foreach($tests as $test){
             if($test=='true') {
                    $temp[] = ['name'=>'a', 'child'='b'];
                 }
                else{
                    $temp[] = ['name' => 'c', 'child'='d'];
                }
            }
        prtint_r($temp);
        

        【讨论】:

          猜你喜欢
          • 2015-06-03
          • 1970-01-01
          • 2016-03-08
          • 2012-03-21
          • 2016-10-24
          • 2011-02-22
          • 1970-01-01
          • 2012-01-23
          • 2013-06-17
          相关资源
          最近更新 更多