2015-11-24 74 views
-3

如何在test2中更改test1数组格式?更改php的阵列结构

$test1 = array(
    'size'=>array('V'=>array('V'),'R'=>array('R','R')), 
    'price'=>array('V'=>array('77'),'R'=>array('88','99')), 
    'unit'=>array('V'=>array('3'),'R'=>array('3','2')), 
    'color'=>array('V'=>array('Black'),'R'=>array('Green','Red'))); 

$test2 = array(
    'size'=>array('V','R'), 
    'price'=>array('V'=>array('Black'=>'77'), 
        'R'=>array('Green'=>'88','Red'=>'99')), 
    'unit'=>array('V'=>array('Black'=>'3'), 
        'R'=>array('Green'=>'3','Red'=>'2')), 
    'color'=>array('V'=>array('Black'),'R'=>array('Green','Red'))); 

谢谢!

回答

0

感谢您的回复。并抱歉没有更具体。其实我以动态的方式想要所有的价值。我构建了一个循环:)。谢谢!

$myArray = array(); 
foreach($test as $type => $array){ 
    $k = 0; 
    foreach ($array as $key => $value) { 
    if($type == 'size'){ 
     $myArray['size'][] = $key; 
    }else if($type == 'price' || $type == 'unit'){ 
     $m = 0; 
     foreach($value as $vall){ 
      if($type == 'price'){ 
       $myArray['price'][$myArray['size'][$k]][$test['color'][$myArray['size'][$k]][$m]] = $test['price'][$myArray['size'][$k]][$m]; 
      }else if($type == 'unit'){ 
       $myArray['unit'][$myArray['size'][$k]][$test['color'][$myArray['size'][$k]][$m]] = $test['unit'][$myArray['size'][$k]][$m]; 
      } 
      $m++; 
     } 
    }else if($type == 'color'){ 
     $myArray['color'][] = $value; 
    } 
    $k++; 
} 
} 
0

使用foreach循环可以更改数组结构。 http://php.net/manual/de/control-structures.foreach.php 类似的东西应该可以工作:它很不清楚规则是从一个数组转换到另一个数组。

$test2 = array(); 
foreach ($test as $type => $array) { 
    $newArray = array(); 
    foreach ($array as $key => $value) { 
     if ($key == 'V') { 
      if ($value == 3) { 
       $newArray['V'] = array('Black' => 3); 
      } else if ($value = 2) { 
       $newArray['V'] = array('Green' => 2); 
      } 
     } else if ($key == 'R') { 
      //.... 
     } 
    } 
    $test2[$type] = $newArray; 
} 
+0

是的,我要求解决方案 – puppy

+0

原来你的问题是不同的。 您应该使用嵌套的foreach循环,以便您可以检查每个变量。 – user5542121