Как отобразить или напечатать массив в PHP?


199

У меня есть этот массив

Array
(
  [data] => Array
    (
      [0] => Array
        (
          [page_id] => 204725966262837
          [type] => WEBSITE
        )

      [1] => Array
        (
          [page_id] => 163703342377960
          [type] => COMMUNITY
        )
      )
)

У меня вопрос, как я могу просто повторить контент без этой структуры? Я попытался

foreach ($results as $result) {
    echo $result->type; 
    echo "<br>";
} 

Ответы:


125

Это будет делать

foreach($results['data'] as $result) {
    echo $result['type'], '<br>';
}

Спасибо тебе за это. Можете ли вы сказать мне, как я могу отображать, например, только тип массива [1]?
EnexoOnoma

7
@Kaoukkosecho $results['data'][1]['type'];
Шиплу Мокаддим

Что делать, если у меня нет ключа, как data?
Пратик Бутани

467

Чтобы увидеть содержимое массива вы можете использовать.

1) print_r($array); или если вы хотите красиво отформатированный массив, то:

echo '<pre>'; print_r($array); echo '</pre>';

2) использовать var_dump($array)для получения дополнительной информации о содержимом массива, например тип данных и длина.

3) Вы можете зациклить массив с помощью php foreach();и получить желаемый результат. больше информации о foreach на веб-сайте документации php:
http://in3.php.net/manual/en/control-structures.foreach.php


2
Красиво и элегантно Возможно, вы захотите изменить закрывающий тег в # 1 с <pre /> на </ pre>.
Майкл

1
Этот ответ не относится к ошибке, допущенной OP.
Шиплу Мокаддим

2
Не могли бы вы объяснить, как конструкция <pre> </ pre> делает это отображение "красиво?"
Робин Эндрюс

1
Тег @Robin <pre> отображает новые строки и табуляцию, поскольку они выводятся print_r (); без <pre> вы увидите грязные неформатированные границы данных. Чтобы увидеть его в формате, вы должны просмотреть HTML-страницу источника.
х

97

Если вы просто хотите узнать содержимое без формата (например, для отладки), я использую это:

echo json_encode($anArray);

Это покажет его в формате JSON, который достаточно удобочитаем для человека.


Я хотел извлечь некоторые данные из html - phpдокумента, используя InAppBrowser executeScriptметод Кордова , без этого json_encode($array)я не смог бы этого достичь! Большое спасибо @Mark E
Хамид Араги

31

Есть несколько функций для печати содержимого массива, каждый из которых имеет свои особенности.

print_r()

Печатает удобочитаемую информацию о переменной.

$arr = ["a", "b", "c"];
echo "<pre>";
print_r($arr);
echo "</pre>";
Array
(
    [0] => a
    [1] => b
    [2] => c
)


var_dump()

Отображает структурированную информацию о выражениях, которая включает его тип и значение.

echo "<pre>";
var_dump($arr);
echo "</pre>";
array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
}


var_export()

Отображает структурированную информацию о данной переменной, возвращаемое представление которой является допустимым кодом PHP.

echo "<pre>";
var_export($arr);
echo "</pre>";
array (
  0 => 'a',
  1 => 'b',
  2 => 'c',
)

Обратите внимание, что, поскольку браузер объединяет несколько пробельных символов (включая символы новой строки) в один пробел ( ответ ), необходимо обернуть вышеупомянутые функции, <pre></pre>чтобы отобразить результат в правильном формате.


Также есть еще один способ печати содержимого массива с определенными условиями.

echo

Выведите одну или несколько строк. Поэтому, если вы хотите напечатать содержимое массива echo, вам нужно циклически перебирать массив и использовать его echoдля печати элементов массива.

foreach ($arr as $key=>$item){
    echo "$key => $item <br>";
}
0 => a 
1 => b 
2 => c 

24

Вы можете использовать print_r, var_dumpи var_exportfuncations РНР:

print_r: Преобразовать в читабельную форму

<?php
echo "<pre>";
 print_r($results); 
echo "</pre>";
?>

var_dump(): покажет вам тип вещи и то, что в ней.

var_dump($results);

foreach loop: используя для каждого цикла вы можете перебирать каждое значение массива.

foreach($results['data'] as $result) {
    echo $result['type'].'<br>';
}


17
foreach($results['data'] as $result) {
    echo $result['type'], '<br />';
}

или echo $results['data'][1]['type'];


Спасибо тебе за это. Можете ли вы сказать мне, как я могу отображать, например, только тип массива [1]?
EnexoOnoma

что вы подразумеваете под массивом [1]? : o
Андреас Вонг

@andreas Я хочу повторить только СООБЩЕСТВО или 163703342377960. Не весь контент массива, а конкретно
EnexoOnoma

Попробуйтеecho $results['data'][1]['page_id'];
Андреас Вонг

8

Вам не нужно ставить цикл для просмотра данных в массиве, вы можете просто сделать это следующим образом

<?php
echo "<pre>";
 print_r($results); 
echo "</pre>";
?>

3

Я знаю, что это старый вопрос, но если вы хотите разобрать представление PHP, вы можете использовать:

$parseablePhpCode = var_export($yourVariable,true);

Если вы выводите экспортированный код в файл file.php (с оператором return), вы можете потребовать его как

$yourVariable = require('file.php');

0

Однако я проверил ответ (для каждого) в PHP устарела и больше не работает с последними версиями php.

Обычно мы конвертируем массив в строку, чтобы записать его куда-нибудь, возможно, отладку или тестирование и т. Д.

Я бы преобразовал массив в строку, выполнив:

$Output = implode(",", $SourceArray);

В то время как:

$ output - это результат (где будет сгенерирована строка

",": это разделитель (между каждым полем массива

$ SourceArray: ваш исходный массив.

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


-2

Зацикливаясь и печатая все значения ассоциативного массива, вы можете использовать foreachцикл, например так:

foreach($results as $x => $value) {
    echo $value;
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.