Como ecoar ou imprimir uma matriz em PHP?

198

Eu tenho essa matriz

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

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

Minha pergunta é como posso ecoar o conteúdo sem essa estrutura? eu tentei

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

Respostas:

125

Isso fará

foreach($results['data'] as $result) {
    echo $result['type'], '<br>';
}
Shiplu Mokaddim
fonte
Obrigado por isso. Você pode me dizer como posso ecoar, por exemplo, apenas o tipo da matriz [1]?
22612 EnexoOnoma
7
@Kaoukkosecho $results['data'][1]['type'];
Shiplu Mokaddim 22/03
E se eu não tiver nenhuma chave como data?
Pratik Butani 24/10
467

Para ver o conteúdo da matriz, você pode usar.

1) print_r($array); ou se você deseja uma matriz bem formatada, então:

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

2) use var_dump($array)para obter mais informações do conteúdo da matriz, como tipo de dados e comprimento.

3) você pode fazer um loop na matriz usando php foreach();e obter a saída desejada. mais informações sobre o foreach no site de documentação do php:
http://in3.php.net/manual/en/control-structures.foreach.php

Ibrahim Azhar Armar
fonte
2
Agradável e elegante. Você pode alterar a tag de fechamento em # 1 de <pre /> para </pre>.
Michael
1
Essa resposta não trata do erro que o OP cometeu.
Shiplu Mokaddim
2
você poderia explicar como a construção <pre> </pre> torna essa exibição "agradável"?
Robin Andrews
1
A tag @Robin <pre> exibe novas linhas e tabulações conforme são exibidas por print_r (); sem <pre> você veria uma confusão de dados não formatados. Para vê-lo formatado, você deve visualizar a fonte da página html.
jc 29/09
96

Se você deseja apenas conhecer o conteúdo sem um formato (por exemplo, para fins de depuração), uso este:

echo json_encode($anArray);

Isso o mostrará como um JSON, que é bastante legível por humanos.

Mark E
fonte
Eu queria extrair alguns dados de um html - phpdocumento usando o InAppBrowser executeScriptmétodo Cordova , sem json_encode($array)conseguir isso! Muito obrigado
@Mark
31

Existem várias funções na impressão de conteúdo de matriz, cada uma com recursos.

print_r()

Imprime informações legíveis por humanos sobre uma variável.

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


var_dump()

Exibe informações estruturadas sobre expressões que incluem seu tipo e valor.

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


var_export()

Exibe informações estruturadas sobre a variável especificada que retornou a representação como código PHP válido.

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

Observe que, como o navegador condensa vários caracteres de espaço em branco (incluindo novas linhas) em um único espaço ( resposta ), é necessário agrupar as funções acima <pre></pre>para exibir o resultado no formato correto.


Também há outra maneira de imprimir o conteúdo da matriz com determinadas condições.

echo

Saída uma ou mais seqüências de caracteres. Portanto, se você quiser imprimir o conteúdo da matriz usando echo, precisará percorrer a matriz e usá-la echopara imprimir itens da matriz.

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

Você pode usar print_r, var_dumpe var_exportfuncations de php:

print_r: Converter em forma legível humana

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

var_dump(): mostrará o tipo da coisa e o conteúdo dela.

var_dump($results);

foreach loop: usando para cada loop, você pode iterar todo e qualquer valor de uma matriz.

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

Você tentou usar print_rpara imprimi-lo em formato legível por humanos?

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

ou echo $results['data'][1]['type'];

Re-assinado
fonte
Obrigado por isso. Você pode me dizer como posso ecoar, por exemplo, apenas o tipo da matriz [1]?
22612 EnexoOnoma
o que você quer dizer com matriz [1]? : o
Andreas Wong
@andreas Quero repetir somente a comunidade ou o 163703342377960. não todo o conteúdo da matriz, mas especificamente
EnexoOnoma
Tenteecho $results['data'][1]['page_id'];
Andreas Wong
8

Você não precisa colocar o loop for para ver os dados na matriz, basta fazer da seguinte maneira

<?php
echo "<pre>";
 print_r($results); 
echo "</pre>";
?>
Vinod Kirte
fonte
3

Eu sei que essa é uma pergunta antiga, mas se você quiser uma representação PHP analisável, poderá usar:

$parseablePhpCode = var_export($yourVariable,true);

Se você repetir o código exportado para um arquivo.php (com uma declaração de retorno), poderá solicitá-lo como

$yourVariable = require('file.php');
Niclas
fonte
0

Eu verifiquei a resposta no entanto, (para cada) no PHP está obsoleta e não funciona mais com as versões mais recentes do php.

Normalmente, converteríamos um array em uma string para registrá-lo em algum lugar, talvez depurando ou testando etc.

Eu converteria a matriz em uma string fazendo o seguinte:

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

Enquanto que:

$ output é o resultado (onde a string seria gerada

",": é o separador (entre cada campo da matriz

$ SourceArray: é sua matriz de origem.

Eu espero que isso ajude

Heider Sati
fonte
-2

Faça um loop e imprima todos os valores de uma matriz associativa; você pode usar um foreachloop, assim:

foreach($results as $x => $value) {
    echo $value;
}
A. Morales
fonte