2016-05-19 2 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']; 
} 

Что цикл Еогеасп делает цикл по каждому первому уровню массива $jsonObj, так что будет включать в себя:

  • мета
  • Фирмы
  • всего_компаний
  • страницы
  • per_page

Затем в фигурных скобках {} цикла Еогеаспа вы можете обратиться к каждому уровню переменной $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']; 

Если вы хотите перебрать компании попробовать это:

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

Я надеюсь, что все помогает! Если вы не понимаете, сделайте комментарий, и я обновлю свой ответ.

1

Пожалуйста, обратите внимание на сайт, чтобы here и here

Информация о 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($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

, если вы знаете, как глубоко ваша структуру массива можно выполнить вложенный цикл Еогеаспа и перед каждым циклом вы должны проверить 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; 
    } 

надеюсь, что это поможет вам понять

Смежные вопросы