【问题标题】:How can I foreach loop through and print out specific values from multidimensional array我如何 foreach 循环并打印出多维数组中的特定值
【发布时间】:2017-08-29 14:03:56
【问题描述】:

这可能重复,但我找不到寻找主题的 anwser。

我有一个数组,女巫长这样:

$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'
          ]
     ]


 ]; 

我想呼应物品类别(武器、饮料)、类型(剑、水等)他们持有的物品。

我只尝试了常规的 foreach,因此它们回显了数组。

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

    }
  }

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

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

    }
  }

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

【问题讨论】:

  • 代替 echo 尝试使用 print_r 进行调试以查看数组中的实际内容。

标签: php arrays multidimensional-array foreach


【解决方案1】:

您需要获取每个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 是数组的最后一层。如果您添加更多级别,您可以继续以相同的方式进行。

【讨论】:

    猜你喜欢
    • 2018-03-20
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2015-06-02
    • 2021-11-26
    • 2018-07-13
    相关资源
    最近更新 更多