如何在PHP中输出数组?

293

我有这个数组

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>";
}
14个回答

598
要查看数组的内容,您可以使用以下方法:
  1. print_r($array); 或者如果你想要格式化的数组:

     echo '<pre>'; print_r($array); echo '</pre>';
    
  2. 使用 var_dump($array) 可以获取数组中内容的更多信息,如数据类型和长度。

  3. 你可以使用 PHP 的 foreach(); 循环遍历数组并获得所需的输出。有关 foreach 的更多信息,请参阅 PHP 的文档网站:foreach


2
很好,优雅。您可能需要将#1中的闭合标签从<pre/>更改为</pre>。 - Michael
1
这个答案没有解决OP犯的错误。 - Shiplu Mokaddim
2
你能解释一下,为什么使用<pre></pre>结构会使显示效果“好看”吗? - Robin Andrews
1
@Robin <pre>标签会将print_r()输出的换行和制表符显示出来;如果没有<pre>,你会看到一堆混乱的未格式化数据。要查看格式化后的数据,您应该查看HTML页面源代码。 - j.c

156

这样就可以了。

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

谢谢您。您能告诉我如何仅回显数组[1]的类型吗? - EnexoOnoma
7
@Kaoukkos echo $results['data'][1]['type']; - Shiplu Mokaddim
2
如果我没有像 data 这样的任何键怎么办? - Pratik Butani
使用 var_dump($array) 函数来获取数组内容的更多信息。 - Jayden Lawson
我如何将这些信息插入到数据库中呢?例如,如果我有一个名为“type”的列的表,并且我想要插入[0]['type'],[1]['type']等怎么办? - Maduro

142

如果您只想查看没有格式的内容(例如,用于调试目的),我使用以下方法:

echo json_encode($anArray);

这将以 JSON 的形式显示,JSON 格式非常易于阅读。


我想使用Cordova InAppBrowserexecuteScript方法从一个html - php文档中提取一些数据,如果没有json_encode($array),我就无法实现这个目的!非常感谢@Mark E。 - Hamid Araghi
2
echo json_encode($downloads, JSON_PRETTY_PRINT); 更好地工作。 - 8ctopus
更加简单和强大。赞。 - Marco Sulla

56

有多个打印数组内容的函数,每个函数都有其特点。

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

34
您可以使用 PHP 的 print_rvar_dumpvar_export 函数: print_r:将数据转换为易于阅读的形式。
<?php
    echo "<pre>";
    print_r($results);
    echo "</pre>";
?>

var_dump()函数:将显示变量类型以及其中的内容。

var_dump($results);

foreach循环: 使用for each循环,您可以迭代数组的每个值。

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

如何将结果插入数据库? - Maduro
告诉我是否有误。我正在基于目录结构构建一个企业资源计划系统(E.R.P.)。 - Stephane Marchand

25

尝试使用print_r以可读的方式打印它。


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

或者echo $results['data'][1]['type'];


谢谢您。您能告诉我如何仅回显数组[1]的类型吗? - EnexoOnoma
你说的 Array [1] 是什么意思? :o - Andreas Wong
@andreas 我只想回显 COMMUNITY 或者 163703342377960。不是整个数组的内容,而是具体的。 - EnexoOnoma
尝试使用 echo $results['data'][1]['page_id']; - Andreas Wong

8
你不需要使用for循环来查看数组中的数据。你可以通过以下方式轻松实现:
<?php
    echo "<pre>";
    print_r($results);
    echo "</pre>";
?>

8
你可以使用 var_dump() 函数来展示有关变量/表达式的结构化信息,包括其类型和值,或者你可以使用 print_r() 来以人类可读的方式显示有关变量的信息。 例子:假设我们有以下数组,并且我们想要显示它的内容。
$arr = array ('xyz', false, true, 99, array('50'));

print_r()函数 - 显示易读的输出

Array
(
    [0] => xyz
    [1] =>
    [2] => 1
    [3] => 99
    [4] => Array
        (
            [0] => 50
        )
)

var_dump()函数 - 显示值和类型

array(5) {
  [0]=>
  string(3) "xyz"
  [1]=>
  bool(false)
  [2]=>
  bool(true)
  [3]=>
  int(100)
  [4]=>
  array(1) {
    [0]=>
    string(2) "50"
  }
}

这个答案中使用的函数可以在PHP文档网站上找到,var_dump()print_r()
更多详情请参考:

8

易于阅读的(例如,可以记录到文本文件中...):

print_r($arr_name, TRUE);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接