2016-05-19 13 views
3

作爲一個新手,沒有人有任何好的教程來幫助我理解不同級別的數組嗎?我試圖學習的是如何回顯不同的層次,例如這裏是輸出數組:如何輸出不同級別的數組

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

任何幫助或指針將大大收到。

+0

[[email protected]](https://secure.php.net/manual/en/language.types.array.php) –

+0

你是否有機會尋找嵌套的foreach? – Chay22

+0

是否要按順序輸出每個「最終」值? – RomanPerekhrest

回答

1

學習

總是一個好主意,開始與文檔:

至於教程,在嘗試了互動教程在Codecademy網站:https://www.codecademy.com/learn/php

  • 單元4有一個關於數組的教程
  • 單元11在高級數組上有一課。

您的代碼

至於你的代碼,看看我會告訴你你的陣列結構以及如何訪問每個元素的下面。也許這會讓你更清楚。

因此可以說你的數組被命名爲$myArray,請參閱如何通過註釋訪問每個部分。請記住,這不是php代碼,我只是告訴你如何訪問數組的不同元素。

$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($jsonObj as $item) 
{ 
    echo $item['total_companies']; 
} 

什麼foreach循環正在做的是通過陣列$jsonObj的每個第一級循環,從而將包括:

  • 公司
  • total_companies
  • per_page

然後內花括號後面的foreach循環,您可以通過可變$item是指每個級別的{}

所以,根據你想要達到的目標,你可能需要改變你的代碼,你試圖去做什麼,因爲它對我來說並不是很清楚。

至於循環內的代碼:

echo $item['total_companies']; 

因爲你想的$jsonObj陣列,它就不第一級內與total_companies索引來訪問數組它不會工作存在。爲它工作的數組必須是這樣的:

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

如果你想通過公司循環試試這個:

foreach($jsonObj['companies'] as $item) 
{ 
    // now item will represent each iterable element in $jsonObj['companies] 
    // so we could do this: 
    echo $item['id']; 
} 

我希望所有幫助!如果您不明白,請發表評論,我會更新我的答案。

1

請參加到herehere

信息有關PHP數組

+0

爲什麼DV爲這個答案? –

4

那麼一看,讓我們開始,你有一個多維數組。對於多維陣列,您需要使用looping,例如:for,while,foreach。爲了您的目的,它是foreach

從數組維度開始,數組可以是多維的,就像你有多維度一樣。如果你有像下面這樣的數組,那麼它就是單一維度。

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進行檢查。

通過您的循環執行的最後一個元素的相同處理並找到您的值。

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

希望這將有助於您瞭解

相關問題