Bagaimana cara mengulang atau mencetak array di PHP?

199

Saya punya array ini

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

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

Pertanyaan saya adalah bagaimana saya bisa menggemakan konten tanpa struktur ini? Saya mencoba

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

Jawaban:

125

Ini akan dilakukan

foreach($results['data'] as $result) {
    echo $result['type'], '<br>';
}
Shiplu Mokaddim
sumber
Terima kasih untuk ini. Bisakah Anda memberi tahu saya bagaimana saya bisa menggemakan misalnya hanya tipe Array [1]?
EnexoOnoma
7
@Kaoukkosecho $results['data'][1]['type'];
Shiplu Mokaddim
Bagaimana jika saya tidak punya kunci data?
Pratik Butani
467

Untuk melihat isi array yang bisa Anda gunakan.

1) print_r($array); atau jika Anda ingin array yang diformat dengan baik maka:

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

2) gunakan var_dump($array)untuk mendapatkan informasi lebih lanjut tentang konten dalam array seperti tipe data dan panjangnya.

3) Anda dapat mengulang array menggunakan php foreach();dan mendapatkan output yang diinginkan. info lebih lanjut tentang foreach di situs web dokumentasi php:
http://in3.php.net/manual/en/control-structures.foreach.php

Ibrahim Azhar Armar
sumber
2
Bagus dan elegan. Anda mungkin ingin mengubah tag penutup di # 1 dari <pre /> ke </pre>.
Michael
1
Jawaban ini tidak membahas kesalahan yang OP lakukan.
Shiplu Mokaddim
2
dapatkah Anda menjelaskan bagaimana konstruksi <pre> </pre> membuat tampilan ini "bagus?"
Robin Andrews
1
Tag @Robin <pre> menampilkan baris dan tabulasi baru saat dikeluarkan oleh print_r (); tanpa <pre> Anda akan melihat batas data yang tidak terformat yang berantakan. Untuk melihatnya diformat, Anda harus melihat sumber halaman html.
jc
97

Jika Anda hanya ingin mengetahui konten tanpa format (misalnya untuk tujuan debug) saya menggunakan ini:

echo json_encode($anArray);

Ini akan menunjukkannya sebagai JSON yang cukup mudah dibaca oleh manusia.

Tandai E
sumber
Saya ingin mengekstrak beberapa data dari html - phpdokumen menggunakan InAppBrowser executeScriptmetode Cordova , tanpa json_encode($array)saya tidak bisa mencapainya! Terima kasih banyak @
Mark
31

Ada beberapa fungsi untuk mencetak konten array yang masing-masing memiliki fitur.

print_r()

Mencetak informasi yang dapat dibaca manusia tentang suatu variabel.

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


var_dump()

Menampilkan informasi terstruktur tentang ekspresi yang menyertakan jenis dan nilainya.

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


var_export()

Menampilkan informasi terstruktur tentang variabel yang diberikan yang mengembalikan representasi adalah kode PHP yang valid.

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

Perhatikan bahwa karena peramban memadatkan beberapa karakter spasi putih (termasuk baris baru) ke satu ruang ( jawaban ), Anda perlu membungkus fungsi-fungsi di atas <pre></pre>untuk menampilkan hasil dalam format yang benar.


Juga ada cara lain untuk mencetak konten array dengan kondisi tertentu.

echo

Keluarkan satu atau lebih string. Jadi jika Anda ingin mencetak konten array menggunakan echo, Anda perlu loop melalui array dan menggunakan loop echountuk mencetak item array.

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

Anda dapat menggunakan print_r, var_dumpdan var_exportfungsi-fungsi dari php:

print_r: Konversikan ke dalam bentuk yang dapat dibaca manusia

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

var_dump(): akan menunjukkan kepada Anda jenis barang serta apa yang ada di dalamnya.

var_dump($results);

foreach loop: menggunakan untuk setiap loop Anda dapat iterate setiap nilai array.

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

Apakah Anda mencoba menggunakannya print_runtuk mencetaknya dalam bentuk yang dapat dibaca manusia?

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

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

Diisi ulang
sumber
Terima kasih untuk ini. Bisakah Anda memberi tahu saya bagaimana saya bisa menggemakan misalnya hanya tipe Array [1]?
EnexoOnoma
apa yang kamu maksud dengan Array [1]? : o
Andreas Wong
@andreas Saya hanya ingin menggema KOMUNITAS atau 163703342377960. Bukan seluruh isi array tetapi secara khusus
EnexoOnoma
Cobaecho $results['data'][1]['page_id'];
Andreas Wong
8

Anda tidak perlu menempatkan loop untuk melihat data ke dalam array, Anda cukup melakukannya dengan cara berikut

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

Saya tahu ini adalah pertanyaan lama tetapi jika Anda menginginkan representasi PHP yang dapat diuraikan, Anda dapat menggunakan:

$parseablePhpCode = var_export($yourVariable,true);

Jika Anda mengulangi kode yang diekspor ke file.php (dengan pernyataan pengembalian), Anda mungkin memerlukannya sebagai

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

Namun saya memeriksa jawabannya, (untuk masing-masing) di PHP sudah usang dan tidak lagi berfungsi dengan versi php terbaru.

Biasanya kita akan mengonversi array menjadi string untuk mencatatnya di suatu tempat, mungkin debugging atau menguji dll.

Saya akan mengubah array menjadi string dengan melakukan:

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

Sedangkan:

$ output adalah hasilnya (di mana string akan dihasilkan

",": adalah pemisah (antara setiap bidang array

$ SourceArray: adalah array sumber Anda.

saya harap ini membantu

Heider Sati
sumber
-2

Loop melalui dan mencetak semua nilai array asosiatif, Anda bisa menggunakan foreachloop, seperti ini:

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