如何在PHP中回显或打印数组?


198

我有这个数组

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

Answers:



467

查看数组的内容,可以使用。

1) print_r($array); 或如果您想要格式化良好的数组,则:

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

2)用于var_dump($array)获取数组内容的更多信息,例如数据类型和长度。

3)您可以使用php循环数组,foreach();并获得所需的输出。在PHP的文档网站上有关于foreach的更多信息:http :
//in3.php.net/manual/en/control-structures.foreach.php


2
尼斯和优雅。您可能希望将#1中的结束标记从<pre />更改为</ pre>。
迈克尔

1
该答案不能解决OP所犯的错误。
Shiplu Mokaddim

2
您能否解释<pre> </ pre>构造如何使此显示“很好”?
罗宾·安德鲁斯

1
@Robin <pre>标记显示由print_r()输出的新行和列表。如果没有<pre>,您会看到混乱的未格式化数据边界。要查看其格式,您应该查看html页面源代码。
jc 2016年

96

如果您只想了解没有格式的内容(例如用于调试),请使用以下命令:

echo json_encode($anArray);

这会将其显示为易于理解的JSON。


我想html - php使用Cordova InAppBrowser executeScript方法从文档中提取一些数据,但是json_encode($array)我无法做到这一点!非常感谢@Mark E
Hamid Araghi

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',
)

请注意,由于浏览器将多个空格字符(包括换行符)压缩为一个空格(answer),因此您需要将上述函数包装起来<pre></pre>以正确的格式显示结果。


还有另一种在特定条件下打印数组内容的方法。

echo

输出一个或多个字符串。因此,如果您要使用来打印数组内容echo,则需要遍历数组并循环使用echo以打印数组项。

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

24

您可以使用print_rvar_dumpvar_export PHP的funcations:

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


这次真是万分感谢。您能告诉我如何仅回显Array [1]的类型吗?
EnexoOnoma

数组[1]是什么意思?:o
Andreas Wong

@andreas我只想回显COMMUNITY或163703342377960。不是阵列的全部内容,而是具体是
EnexoOnoma 2012年

试试echo $results['data'][1]['page_id'];
Andreas Wong


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;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.