我如何foreach循环并从多维数组中打印出特定的值

时间:2017-08-29 14:03:57

标签: php arrays multidimensional-array foreach

这可能重复,但我找不到anwser看起来很烦人的主题。

我有一个数组,女巫看起来像这样:

win = app.window(title=name_sup)
win.Part.Click()

我想回应一下他们所持有的物品类别(武器,饮料),类型(剑,水等)。

我尝试了一个常规的foreach,所以他们回应数组。

$itemx=
 [
     'Weapons'=>[
          'Sword'=> [
             'Name'   => 'Lurker',
             'Value'  => '12',
             'Made'   => 'Acient'
           ],

           'Shield'=> [
              'Name'   => 'Obi',
              'Value'  => '22',
              'Made'   => 'Acient'
            ],

            'Warhammer'=> [
               'Name'   => 'Clotch',
               'Value'  => '124',
               'Made'   => 'Acient'
             ]
     ],
     'Drinks'=>[
       'Water'=> [
          'Name'   => 'Clean-water',
          'Value'  => '1',
          'Made'   => 'Acient'
        ],

        'Wine'=> [
           'Name'   => 'Soff',
           'Value'  => '5',
           'Made'   => 'Acient'
         ],

         'Vodka'=> [
            'Name'   => 'Laudur',
            'Value'  => '7',
            'Made'   => 'Acient'
          ]
     ]


 ]; 

所以我想我可以从数组中选择。

  function getAllCategories()
  {
    foreach ($this->_prop as $cate)
    {
      echo $cate;
      foreach ($cate as $type)
      {
        echo $type;
      }

    }
  }

但是他们什么都没回应,我不明白我怎么能打印出我想要的那些价值。

1 个答案:

答案 0 :(得分:2)

您需要在每个foreach()中同时获取索引和值(作为数组),这样您就可以通过维度继续进入":

function getAllCategories()
{
  foreach ($this->_prop as $cate => $items)
  {
    echo $cate."<br>";
    foreach ($items as $type => $values)
    {
      echo $type."<br>";
    }

    echo "<br>";
  }
}

/* result
Weapons
Sword
Shield
Warhammer

Drinks
Water
Wine
Vodka
*/

现在,在第一级,$cate是每个元素的索引,$items是包含下一级别的数组。

然后$values是一个包含数组最后一层的数组。如果你添加更多级别,你可以继续以相同的方式进行。