Làm thế nào để lặp lại hoặc in một mảng trong PHP?


198

Tôi có mảng này

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

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

Câu hỏi của tôi là làm thế nào tôi có thể chỉ lặp lại nội dung mà không có cấu trúc này? Tôi đã thử

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

Câu trả lời:


125

Điều này sẽ làm

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

Cảm ơn vì điều này. Bạn có thể cho tôi biết làm thế nào tôi có thể lặp lại ví dụ chỉ loại Mảng [1] không?
EnexoOnoma

7
@Kaoukkosecho $results['data'][1]['type'];
Shiplu Mokaddim

Nếu tôi không có chìa khóa nào datathì sao?
Pratik Butani

467

Để xem nội dung của mảng bạn có thể sử dụng.

1) print_r($array); hoặc nếu bạn muốn mảng được định dạng độc đáo thì:

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

2) sử dụng var_dump($array)để có thêm thông tin về nội dung trong mảng như kiểu dữ liệu và độ dài.

3) bạn có thể lặp mảng bằng cách sử dụng php foreach();và nhận đầu ra mong muốn. Thông tin thêm về foreach trong trang web tài liệu của php:
http://in3.php.net/manual/en/control-strucenses.foreach.php


2
Đẹp và thanh lịch. Bạn có thể muốn thay đổi thẻ đóng trong # 1 từ <pre /> thành </ pre>.
Michael

1
Câu trả lời này không giải quyết được lỗi mà OP đã làm.
Shiplu Mokaddim

2
bạn có thể giải thích cách cấu trúc <pre> </ pre> làm cho màn hình này "độc đáo không?"
Robin Andrew

1
Thẻ @Robin <pre> hiển thị các dòng và bảng mới khi được xuất ra bởi print_r (); không có <pre> bạn sẽ thấy một giới hạn dữ liệu không được định dạng lộn xộn. Để xem nó được định dạng, sau đó bạn nên xem nguồn trang html.
jc

96

Nếu bạn chỉ muốn biết nội dung mà không có định dạng (ví dụ cho mục đích gỡ lỗi), tôi sử dụng:

echo json_encode($anArray);

Điều này sẽ hiển thị nó dưới dạng JSON, có thể đọc được.


Tôi muốn trích xuất một số dữ liệu từ một html - phptài liệu bằng InAppBrowser executeScriptphương pháp Cordova , mà json_encode($array)tôi không thể đạt được điều đó! Cảm ơn rất nhiều
@Mark

31

Có nhiều chức năng để in nội dung mảng mà mỗi có tính năng.

print_r()

In thông tin con người có thể đọc được về một biến.

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


var_dump()

Hiển thị thông tin có cấu trúc về các biểu thức bao gồm loại và giá trị của nó.

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


var_export()

Hiển thị thông tin có cấu trúc về biến đã cho mà biểu diễn trả về là mã PHP hợp lệ.

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

Lưu ý rằng vì trình duyệt ngưng tụ nhiều ký tự khoảng trắng (bao gồm cả dòng mới) vào một khoảng trắng ( câu trả lời ), bạn cần phải bọc các hàm trên <pre></pre>để hiển thị kết quả ở định dạng chính xác.


Ngoài ra có một cách khác để in nội dung mảng với các điều kiện nhất định.

echo

Xuất một hoặc nhiều chuỗi. Vì vậy, nếu bạn muốn in nội dung mảng bằng cách sử dụng echo, bạn cần lặp qua mảng và sử dụng vòng lặp echođể in các mục mảng.

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

24

Bạn có thể sử dụng print_r, var_dumpvar_exportfuncations của php:

print_r: Chuyển đổi thành dạng người dễ đọc

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

var_dump(): sẽ cho bạn thấy loại của sự vật cũng như những gì trong đó.

var_dump($results);

foreach loop: sử dụng cho mỗi vòng lặp, bạn có thể lặp lại từng giá trị của một mảng.

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

20

Bạn đã thử sử dụng print_rđể in nó ở dạng người có thể đọc được chưa?


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

hoặc là echo $results['data'][1]['type'];


Cảm ơn vì điều này. Bạn có thể cho tôi biết làm thế nào tôi có thể lặp lại ví dụ chỉ loại Mảng [1] không?
EnexoOnoma

Bạn có ý nghĩa gì với Mảng [1]? : o
Andreas Wong

@andreas Tôi chỉ muốn lặp lại CỘNG ĐỒNG hoặc 163703342377960. Không phải toàn bộ nội dung của mảng mà cụ thể
EnexoOnoma

Hãy thửecho $results['data'][1]['page_id'];
Andreas Wong

8

Bạn không cần phải đặt vòng lặp để xem dữ liệu vào mảng, bạn chỉ cần làm theo cách sau

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

3

Tôi biết đây là một câu hỏi cũ nhưng nếu bạn muốn một đại diện PHP có thể phân tích cú pháp, bạn có thể sử dụng:

$parseablePhpCode = var_export($yourVariable,true);

Nếu bạn lặp lại mã đã xuất thành tệp.php (có câu lệnh return), bạn có thể yêu cầu mã đó là

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

0

Tuy nhiên, tôi đã kiểm tra câu trả lời, (đối với mỗi) trong PHP không được dùng nữa và không còn hoạt động với các phiên bản php mới nhất.

Thông thường chúng ta sẽ chuyển đổi một mảng thành một chuỗi để đăng nhập nó ở đâu đó, có thể gỡ lỗi hoặc kiểm tra, v.v.

Tôi sẽ chuyển đổi mảng thành một chuỗi bằng cách thực hiện:

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

Trong khi:

$ output là kết quả (trong đó chuỗi sẽ được tạo

",": là dấu phân cách (giữa mỗi trường mảng

$ SourceArray: là mảng nguồn của bạn.

Tôi hi vọng cái này giúp được


-2

Lặp lại và in tất cả các giá trị của một mảng kết hợp, bạn có thể sử dụng một foreachvòng lặp, như thế này:

foreach($results as $x => $value) {
    echo $value;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.