如何输出不同级别的数组

时间:2016-05-19 10:33:54

标签: php arrays

作为一个新手,有没有人有任何好的教程来帮助我理解不同级别的数组?我试图学习的是如何回应不同的水平,例如:这是输出数组:

Array 
(
    [meta] => 
    Array 
    (
        [total_record_count] => 1 
        [total_pages] => 1 
        [current_page] => 1 
        [per_page] => 1 
    ) 
    [companies] => 
    Array 
    (
        [0] => 
        Array 
        (
            [id] => 291869 
            [url] => https://api.mattermark.com/companies/291869 
            [company_name] => gohenry.co.uk 
            [domain] => gohenry.co.uk 
        ) 
    ) 
    [total_companies] => 1 
    [page] => 1 
    [per_page] => 1 
) 

以下是解析数组的代码:

foreach($jsonObj as $item)
{
    echo $item['total_companies'];
}

我真的很难找到结构以及如何输出每个项目,例如尝试过这样的事情:

echo $item[0]['total_companies'];
echo $item['companies'][0]['id'];

任何帮助或指示都会受到极大的欢迎。

5 个答案:

答案 0 :(得分:4)

好吧,让我们开始,你有一个多维数组。对于多维数组,您需要使用looping,例如:forwhileforeach。出于您的目的,它是foreach

从数组维开始,Array可以是多维的,就像你有多维一样。如果你有一个如下所示的数组,则它是单维的。

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)

现在,你怎么知道什么是多维数组,如果你的数组有另一个数组作为子数,那么它被称为多维数组,如下所示。

$array = array(
    "foo" => "bar",
    42    => 24,
    "multi" => array(
         "dimensional" => array(
             "array" => "foo"
         )
    )
);

是时候使用你的阵列了。假设您要访问company_name的值,您应该怎么做?让您的数组名称为$arr

首先,您需要使用foreach循环,如:

foreach($arr as $key => $val)

keys(meta, companies, total_companies...),它们位于第一维。现在检查密钥是否为company_name,如果匹配的话比你得到的还要多。否则,如果$val是一个数组,则需要进行另一个循环,您可以使用is_array进行检查。

通过最后一个元素的相同处理,循环执行并找到你的值。

答案 1 :(得分:1)

请查看herehere

有关php数组的信息

答案 2 :(得分:1)

<强>学习

从文档开始总是一个好主意:

至于教程,请尝试使用codecademy上的交互式教程:https://www.codecademy.com/learn/php

  • 第4单元有关于数组的教程
  • 第11单元有一个关于高级阵列的课程。

您的代码

至于您的代码,请查看以下内容,我将向您展示您的数组结构以及如何访问每个元素。也许这会让事情变得更加清晰。

因此,假设您的数组名为textarea,请参阅如何通过注释访问每个部分。请记住,这不是PHP代码,我只是向您展示如何访问阵列的不同元素。

$myArray

至于你的每个循环

$myArray = Array 
(
  // $myArray['meta']
    [meta] =>  Array  (
      // $myArray['meta']['total_record_count']
        [total_record_count] => 1 
      // $myArray['meta']['total_pages']
        [total_pages] => 1 
      // $myArray['meta']['current_page']
        [current_page] => 1 
      // $myArray['meta']['per_page']
        [per_page] => 1 
    ) 
    // $myArray['companies']
    [companies] =>  Array  (
      // $myArray['companies'][0]
        [0] =>  Array (
          // $myArray['companies'][0]['id']
            [id] => 291869 
          // $myArray['companies'][0]['url']
            [url] => https://api.mattermark.com/companies/291869 
          // $myArray['companies'][0]['company_name']
            [company_name] => gohenry.co.uk 
          // $myArray['companies'][0]['domain']
            [domain] => gohenry.co.uk 
        ) 
    ) 
  // $myArray['total_companies']
    [total_companies] => 1 
  // $myArray['page']
    [page] => 1 
  // $myArray['per_page']
    [per_page] => 1 
)

foreach循环正在循环遍历数组foreach($jsonObj as $item) { echo $item['total_companies']; } 的每个第一级,因此包括:

  • 公司
  • total_companies
  • per_page

然后在foreach循环的花括号$jsonObj内,您可以通过变量{}引用每个级别。

因此,根据您想要实现的目标,您可能需要更改代码,您尝试做的是什么,因为它对我来说并不是很清楚。

关于循环中的代码:

$item

它不会起作用,因为您尝试访问echo $item['total_companies']; 数组的第一级中的索引为total_companies的数组,而该数组并不存在。要使它工作,您的数组必须如下所示:

$jsonObj

你想要做的是:

$jsonObj = array (
  '0' => array ( // this is what is reference to as $item
    'total_companies' => 'some value'
  )
)

至于你最后的代码片段:

foreach($jsonObj as $item)
{
    echo $jsonObj['total_companies'];
}

上面回答了这个问题。像echo $item[0]['total_companies'];

一样访问它
$jsonObj['total_companies'];

如果您想循环使用这些公司,请尝试以下方法:

echo $item['companies'][0]['id'];

我希望一切都有帮助!如果您不理解,请发表评论,我会更新我的答案。

答案 3 :(得分:0)

使用此函数尝试递归数组打印:

function recursive($array){
    foreach($array as $key => $value){
        //If $value is an array.
        if(is_array($value)){
            //We need to loop through it.
            recursive($value);
        } else{
            //It is not an array, so print it out.
            echo $value, '<br>';
        }
    }
}

答案 4 :(得分:0)

如果你知道你的数组结构有多深,你可以执行嵌套的foreach循环,在每个循环之前你必须检查is_array($ array_variable),如:

foreach($parent as $son)
 {
  if(is_array($son))
  {
    foreach($son as $grandson)
     {
       if(is_array($son))
        {
foreach($grandson as $grandgrandson)
 {
     .....
   ......
  .......

  }
 else
  echo $grandson;
  }
else
   echo $parent;
  }
else
 echo $son;
  }

希望它能帮助您理解