วิธีการสะท้อนหรือพิมพ์อาร์เรย์ใน 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>";
} 

คำตอบ:


125

สิ่งนี้จะทำ

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

ขอบคุณสำหรับสิ่งนี้. คุณบอกฉันได้อย่างไรว่าฉันจะสะท้อนตัวอย่างของ Array [1] ได้อย่างไร
EnexoOnoma

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

ถ้าฉันไม่มีรหัสใด ๆ จะเป็นdataอย่างไร
Pratik Butani

467

เพื่อดูเนื้อหาของอาเรย์ที่คุณสามารถใช้ได้

1) print_r($array); หรือถ้าคุณต้องการอาเรย์ที่จัดรูปแบบแล้ว:

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

2)ใช้var_dump($array)เพื่อรับข้อมูลเพิ่มเติมของเนื้อหาในอาเรย์เช่นประเภทข้อมูลและความยาว

3)คุณสามารถวนลูปอาร์เรย์โดยใช้ php foreach();และรับเอาต์พุตที่ต้องการ ข้อมูลเพิ่มเติมเกี่ยวกับ foreach ในเว็บไซต์เอกสารของ php:
http://in3.php.net/manual/en/control-structures.foreach.php


2
ดีและสง่างาม คุณอาจต้องการเปลี่ยนแท็กปิดใน # 1 จาก <pre /> เป็น </pre>
Michael

1
คำตอบนี้ไม่ได้แก้ไขข้อผิดพลาดที่ OP ทำ
Shiplu Mokaddim

2
คุณช่วยอธิบายว่าโครงสร้าง <pre> </pre> ทำให้จอแสดงผลนี้ "ดีขึ้นได้อย่างไร"
Robin Andrews

1
@Robin <pre> แท็กแสดงบรรทัดใหม่และการจัดเรียงใหม่เนื่องจากถูกส่งออกโดย print_r (); หากไม่มี <pre> คุณจะเห็นข้อมูลที่ไม่มีการจัดรูปแบบยุ่ง หากต้องการดูในรูปแบบที่คุณควรดูแหล่งที่มาของหน้า html
jc

96

หากคุณต้องการทราบเนื้อหาที่ไม่มีรูปแบบ (เช่นเพื่อการดีบัก) ฉันใช้สิ่งนี้:

echo json_encode($anArray);

นี่จะแสดงว่าเป็น JSON ซึ่งมนุษย์อ่านได้สวย


ฉันต้องการที่จะดึงข้อมูลบางอย่างจากhtml - phpเอกสารโดยใช้InAppBrowser executeScriptวิธีCordova โดยที่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',
)

โปรดทราบว่าเนื่องจากเบราว์เซอร์ย่ออักขระช่องว่างหลายรายการ (รวมถึงการขึ้นบรรทัดใหม่) ไปยังช่องว่างเดียว ( คำตอบ ) คุณต้องล้อมฟังก์ชันข้างต้น<pre></pre>เพื่อแสดงผลลัพธ์ในรูปแบบที่ถูกต้อง


นอกจากนี้ยังมีวิธีอื่นในการพิมพ์เนื้อหาของอาเรย์ด้วยเงื่อนไขบางประการ

echo

เอาต์พุตหนึ่งสายหรือมากกว่า ดังนั้นหากคุณต้องการพิมพ์เนื้อหาของอาเรย์โดยใช้echoคุณต้องวนซ้ำอาเรย์และในลูปechoเพื่อใช้ในการพิมพ์รายการอาเรย์

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

24

คุณสามารถใช้print_r, var_dumpและvar_exportfuncations ของ PHP:

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

Array [1] หมายถึงอะไร : o
Andreas Wong

@andreas ฉันต้องการสะท้อนเฉพาะชุมชนหรือ 163703342377960 ไม่ใช่เนื้อหาทั้งหมดของอาเรย์ แต่โดยเฉพาะ
EnexoOnoma

ลองecho $results['data'][1]['page_id'];
Andreas Wong

8

คุณไม่จำเป็นต้องใส่ลูปเพื่อดูข้อมูลในอาเรย์คุณสามารถทำได้โดยทำตามวิธี

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

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;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.