繁体   English   中英

处理多维PHP数组

[英]Handling multi-dimensional PHP Array

我有其名称和粗细的字体数组,例如

 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”在最终数组中具有不同的“ weight”,则仅应将“ weight”与“ 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
    }
  }

任何帮助或想法将不胜感激。 干杯

第一

使用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);
?>

看起来像这样的结构可能对您有用:

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

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

$final_arr[] = $fontarray1

创建多维数组:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM