2010-11-29 95 views
0

我试图用两个数组的信息创建表。这里有两个阵列:重新索引并根据另一个阵列填充阵列

第一阵列,表头

Array 
(
    [0] => Color 
    [1] => Length 
    [2] => Waist 
) 

第二阵列,即需要修改

Array 
(
    [0] => Array 
     [0] => green [1] => Color 

    [1] => Array 
     [0] => 23 [1] => Length 
) 
Array 
(
    [0] => 
) 
Array 
(
    [0] => Array 
     [0] => 23 [1] => Length 

    [1] => Array 
     [0] => 24 [1] => Waist 
)  

阵列需要像这样的一个:

Array 
(
    [0] => Array 
     [0] => green [1] => Color 

    [1] => Array 
     [0] => 23 [1] => Length 

    [2] => Array 
     [0] => [1] => Waist 

Array 
(
    [0] => Array 
     [0] => [1] => Color 

    [1] => Array 
     [0] => [1] => Length 

    [2] => Array 
     [0] => [1] => Waist 

Array 
(
    [0] => Array 
     [0] => [1] => Color 

    [1] => Array 
     [0] => 23 [1] => Length 

    [2] => Array 
     [0] => 24 [1] => Waist 

所以问题是第一级中的键需要匹配数组中的键ma kes表头,其中[1]第二级与表头具有相同的值。有任何想法吗?

+0

这很难弄清楚你的问题。你需要重新格式化数组吗?你能不能改变生成它们的脚本以适当的格式给出数组? – Stephen 2010-11-29 22:47:37

+0

数字键的顺序很重要吗? – Stephen 2010-11-29 22:51:18

回答

2

你有一个复杂的阵列结构一个简单的集合数据。你的最终阵列能够像这样更好地工作吗?

$data = array(
    array(
     'Color' => 'green', 
     'Length' => 23, 
     'Waist' => NULL 
    ), 
    array(
     'Color' => NULL, 
     'Length' => NULL, 
     'Waist' => NULL 
    ), 
    array(
     'Color' => NULL, 
     'Length' => 23, 
     'Waist' => 24 
    ) 
); 

如果你对你的结构死心塌地,不过,这应该工作:

function format_my_array($keys, $malformed) { 
    foreach ($malformed as $key => $fragments) { 
     $temp = array(
      'Color' => NULL, 
      'Length' => NULL, 
      'Waist' => NULL 
     ); 
     foreach ($fragments as $fragment) { 
      if (isset($fragment[1])) { 
       switch($fragment[1]) { 
        case 'Length': 
         $temp['Length'] = $fragment[1]; 
         break; 
        case 'Waist': 
         $temp['Waist'] = $fragment[1]; 
         break; 
        default: 
         $temp['Color'] = $fragment[1]; 
         break; 
       } 
      } 
     } 
     $malformed[$key] = array(
      array($temp['Color'], 'Color'), 
      array($temp['Length'], 'Length'), 
      array($temp['Waist'], 'Waist') 
     ); 
    } 
    return $malformed; 
}