2014-03-29 141 views
0

我有一些字体数组及其名称和权重,例如处理多维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”键一起添加。预期结果应该是是这样的:

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 
    } 
    } 

任何帮助或想法将不胜感激。欢呼声

回答

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); 
?> 
0

Look`像这样的结构能够对您有用:

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; 
} 
+0

感谢misterion ..我想你的代码,但如果我复制和改变$的fontName和$ fontWeight设置变量之后第二字型阵列粘贴代码,我得到以下错误:[]运算符不支持字符串 – user1718343

+0

看起来像变量不是数组,而是字符串。 – misterion

0

你只是想以$ fontarray1添加到$ final_arr?

$final_arr[] = $fontarray1 

创建多维数组:

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