douza1373 2016-07-05 06:10
浏览 111
已采纳

从多维数组中获取元素

i have an array with this structure

$font = Array
(
["family"] => ABeeZee
["category"] => sans-serif
["variants"] => Array
    (
        [0] => regular
        [1] => italic
    )

["subsets"] => Array
    (
        [0] => latin
    )

)

i want to get the elements like $family = ABeeZee ,$variants = regular, italic

  • 写回答

3条回答 默认 最新

  • dptj13337 2016-07-05 06:21
    关注

    Please have a look attached snippet.

    Check it over here. https://eval.in/600521

    <?php
    $arr=array(
    "family" => 'ABeeZee',
    "category" => "sans-serif",
    "variants" => array("regular","italic"),
    "subsets" => array("latin"));
    foreach($arr as $key=>$arr){
        if(is_array($arr)){
            echo "$".$key ."=". implode(",",$arr);
        }else{
            echo "$".$key ."=". $arr;
        }
        echo "<br>";
    }
    ?>
    

    Above snippet will return following output.

    $family=ABeeZee
    $category=sans-serif
    $variants=regular,italic
    $subsets=latin
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • donglin7383 2016-07-05 06:37
    关注

    See this one

    <?php
     $arr=array(
     "family" => 'ABeeZee',
     "category" => "sans-serif",
     "variants" => array("regular","italic"),
     "subsets" => array("latin")
     );
     $family =  $arr['family'];
     $variants = '';
     foreach($arr['variants'] as $val){
      if($variants != ''){
       $variants = $variants.',';
       }
      $variants = $variants.$val;
     }
    echo $family.PHP_EOL;
    echo $variants;
    ?>
    
    评论
  • dongshi3361 2016-07-05 08:08
    关注

    I assume you want to search your array for elements that match certain criteria.

    I've included a method to search for fonts by variant or variants.

    <?php
    $fonts =
    [
        [
            'family'   => 'Foo',
            'category' => 'sans-serif',
            'variants' =>
                [
                    'regular',
                    'italic'
                ]
        ],
        [
            'family'   => 'Bar',
            'category' => 'cursive',
            'variants' =>
                [
                    'regular',
                    'bold'
                ]
        ],
        [
            'family'   => 'Baz',
            'category' => 'monospace',
            'variants' =>
                [
                    'italic',
                    'regular',
                    'bold'
                ]
        ]
    ];
    
    
    // Build some indexes for search functions.
    $family_index   = [];
    $variants_index = [];
    foreach($fonts as $index => $font) {
        $family_index[$font['family']] = $index;
        foreach($font['variants'] as $variant) {
            $variants_index[$variant][] = $index;
        }
    }
    
    $filter_by_family = function($family) use ($fonts, $family_index) {
        return isset($family_index[$family]) ? $fonts[$family_index[$family]] : null;
    };
    
    $filter_by_variants = function(array $variants) use ($fonts, $variants_index) {
        $font_index_matches = array();
        foreach($variants as $variant) {
            if(isset($variants_index[$variant])) {
                $font_index_matches[] = $variants_index[$variant];
            }
        }
    
        if(!count($font_index_matches)) return;
    
        $matches = count($font_index_matches) > 1 
            ? call_user_func_array('array_intersect', $font_index_matches)
            : $font_index_matches[0];
    
        return array_intersect_key($fonts, array_flip($matches));
    };
    
    var_dump($filter_by_family('Bar'));
    var_dump($filter_by_variants(['italic']));
    var_dump($filter_by_variants(['regular','bold']));
    

    Output:

    array (size=3)
      'family' => string 'Bar' (length=3)
      'category' => string 'cursive' (length=7)
      'variants' => 
        array (size=2)
          0 => string 'regular' (length=7)
          1 => string 'bold' (length=4)
    array (size=2)
      0 => 
        array (size=3)
          'family' => string 'Foo' (length=3)
          'category' => string 'sans-serif' (length=10)
          'variants' => 
            array (size=2)
              0 => string 'regular' (length=7)
              1 => string 'italic' (length=6)
      2 => 
        array (size=3)
          'family' => string 'Baz' (length=3)
          'category' => string 'monospace' (length=9)
          'variants' => 
            array (size=3)
              0 => string 'italic' (length=6)
              1 => string 'regular' (length=7)
              2 => string 'bold' (length=4)
    array (size=2)
      1 => 
        array (size=3)
          'family' => string 'Bar' (length=3)
          'category' => string 'cursive' (length=7)
          'variants' => 
            array (size=2)
              0 => string 'regular' (length=7)
              1 => string 'bold' (length=4)
      2 => 
        array (size=3)
          'family' => string 'Baz' (length=3)
          'category' => string 'monospace' (length=9)
          'variants' => 
            array (size=3)
              0 => string 'italic' (length=6)
              1 => string 'regular' (length=7)
              2 => string 'bold' (length=4)
    
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 问题描述:给定一个算术表达式,通过程序求出最后的结果
  • ¥15 spyder运行重复
  • ¥15 我考考你,这代码是对的还是错的?
  • ¥15 我用C语言easyx图形库绘制了一个3d游戏方框透视,但进入游戏时候鼠标准星对准方框边缘 鼠标光标就会弹出来这是啥情况怎样让光标对准绘制的方框点击鼠标不弹出光标好烦这样
  • ¥20 用Power Query整合的问题
  • ¥20 基于python进行多背包问题的多值编码
  • ¥15 相同型号电脑与配置,发现主板有一台貌似缺少了好多元器件似的,会影响稳定性和使用寿命吗?
  • ¥15 C语言:数据子序列基础版
  • ¥20 powerbulider 导入excel文件,显示不完整
  • ¥15 paddle训练自己的数据loss降不下去