更改php中的数组结构
如何像在test2中一样更改test1数组格式更改php中的数组结构,php,arrays,Php,Arrays,如何像在test2中一样更改test1数组格式 $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'
$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')));
谢谢 使用foreach循环可以更改数组结构。 类似的方法应该会起作用:在您的情况下,从一个数组转换到另一个数组的规则非常不明确
$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;
}
谢谢你的回复。很抱歉没有说得更具体。实际上,我希望所有的值都是动态的。我构造了一个循环:。谢谢
$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++;
}
}
原来你的问题不一样。您应该使用嵌套的foreach循环,以便可以检查每个变量。