处理多维PHP数组

时间:2014-03-29 19:41:11

标签: php

我有字体数组,例如名称和重量。

 print_r($fontarray1);

 Array ( 
   [font] => Open+Sans 
   [weight] => normal 
 )


 print_r($fontarray2);

 Array ( 
   [font] => Open+Sans 
   [weight] => bold 
 )

 print_r($fontarray3);

 Array ( 
   [font] => Lato
   [weight] => bolditalic
 )

我有很多字体数组$ fontarray1,$ fontarray2,$ fontarray3 ..我想制作一个最终的字体数组及其权重...例如,如果" Open + Sans"已经在最后一个数组中,它不应该被添加,但是如果" Open + Sans"在最终阵列中有一个不同的"权重"然后只有"重量"应该加上" Open + Sans" key ..预期结果应该是这样的:

 Array ( 
   [font] => Oen+Sans
   [weight] => Array (
       [0] => normal
       [1] =>bold
   )
   [font] => Lato
   [weight] => Array (
       [0] => bolditalic
   )

 )

我尝试了类似下面的内容,但对如何在一个数组中添加另一个数组感到困惑..:

  $final_arr = Array();
  if (!in_array($fontarray1['font'], $final_arr)) {
    $final_arr []= $fontarray1['font'];

  } else {
    // already in array, lets check font weight
    }
  }

任何帮助或想法都将受到高度赞赏。欢呼声

3 个答案:

答案 0 :(得分:0)

首先

使用array_merge

<?php
$beginning = 'foo';
$end = array(1 => 'bar');
$result = array_merge((array)$beginning, (array)$end);
print_r($result);
?>

第二

使用array_unique

<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
?>

答案 1 :(得分:0)

看起来像这样的结构对你有用:

 Array( 
   "fontName" => Array(  
     [weight] => Array(
       [0] => "normal"
     )
   )
 )

你的功能就像

$final_arr = Array();
$fontName = $fontarray1['font'];
$fontWeight = $fontarray1['weight'];
if (!isset($final_arr[$fontName])) {
    $final_arr[$fontName] = array('weight' => $fontWeight);
} else {
    $final_arr[$fontName]['weight'][] = $fontWeight;
}

答案 2 :(得分:0)

您只是想将$ fontarray1添加到$ final_arr?

$final_arr[] = $fontarray1

创建多维数组:

$theArray = array();
$theArray[] = array('key1'=>'val1', 'key2'=>'val2'); // creates a subarray