एक पठनीय / पदानुक्रमित प्रारूप में एक सरणी प्रदर्शित करें


96

यहाँ मेरे सरणी के लिए डेटा खींचने के लिए कोड है

<?php
    $link = mysqli_connect('localhost', 'root', '', 'mutli_page_form');

    $query = "SELECT * FROM wills_children WHERE will=73";

    $result = mysqli_query($link, $query) or die(mysqli_error($link));

    if ($result = mysqli_query($link, $query)) {

    /* fetch associative array */
    if($row = mysqli_fetch_assoc($result)) {
        $data = unserialize($row['children']);
    }

    /* free result set */
    mysqli_free_result($result);
    }
?>

जब मैं Print_r ($ डेटा) का उपयोग करता हूं तो यह इस प्रकार है:

Array ( [0] => Array ( [0] => Natural Chlid 1 [1] => Natural Chlid 2 [2] => Natural Chlid 3 ) ) 

मैं इसे इस रूप में पढ़ना चाहूंगा:

प्राकृतिक बच्चा 1
प्राकृतिक बच्चा 2
प्राकृतिक बच्चा 3

जवाबों:


31

इसे इस्तेमाल करे:

foreach($data[0] as $child) {
   echo $child . "\n";
}

की जगह में print_r($data)


1
<?php foreach($data[0] as $child) { echo $child . "<br />"; }?> यह महान धन्यवाद ब्रायन काम किया!
जेवियर

55
पृथ्वी पर यह चुना हुआ उत्तर क्यों है जब <pre> </ pre> स्पष्ट पसंद है?
Cantsay

1
यदि आपके पास बहुआयामी सरणी है तो यह काम नहीं करेगा।
अलसाना

3
@Alesana हां, लेकिन ओपी में एक बहुआयामी सरणी नहीं था। मुझे लगता है कि अन्य लोगों ने इस उत्तर पर टिप्पणी की है जिस तरह से आप जाना चाहते हैं <pre>print_r($data)</pre>। हालांकि 5+ साल पुराने उत्तर पर एक नई टिप्पणी देखने के लिए हमेशा मज़ेदार रहें! :)
ब्रायन ड्रिस्कॉल

2
आह, मेरे मामले में मैं एक बहुआयामी सरणी के साथ काम कर रहा था। मैंने इससे पहले कोई टिप्पणी नहीं छोड़ी है, जब मैंने देखा कि किसी और ने यह इंगित नहीं किया था कि मुझे लगा कि यह एक सही अवसर हो सकता है!
अलसाना

423

के बजाय

print_r($data);

प्रयत्न

print "<pre>";
print_r($data);
print "</pre>";

3
यह भी ध्यान देने योग्य है कि आप trueडेटा प्राप्त करने के लिए print_r के लिए दूसरे पैरामीटर के रूप में पास कर सकते हैं string। अब आप return '<pre>'.print_r(User::all(), true);अपने मार्गों फ़ाइल से कर सकते हैं ।
DutGRIFF

मुझे यह उत्तर भी पसंद है लेकिन ओपी केवल स्ट्रिंग्स को प्रिंट करना चाहता था, न कि सरणी सूचकांकों (ऐसा लगता है)। और केवल 1-आयामी डेटा। मैं आमतौर पर केवल डेटा के रिकॉर्ड को जांचने के लिए करता हूं, इससे पहले कि मैं एक समाधान जारी रखूं, इसलिए यह समाधान उस तरह से सामान के लिए बेहतर तरीके से काम करता है।
Iopener


47

मेरा एक मूल कार्य है:

function prettyPrint($a) {
    echo "<pre>";
    print_r($a);
    echo "</pre>";
}

prettyPrint($data);

संपादित करें: अनुकूलित फ़ंक्शन

function prettyPrint($a) {
    echo '<pre>'.print_r($a,1).'</pre>';
}

संपादित करें: कस्टम टैग समर्थन के साथ मूर अनुकूलित कार्य

function prettyPrint($a, $t='pre') {echo "<$t>".print_r($a,1)."</$t>";}

7
सबसे अच्छा जवाब अब तक, और आप इसे और अधिक अनुकूलित कर सकते हैं अगर यह बहुत बार अल्पविराम के साथ प्रयोग किया जाता है:echo '<pre>',print_r($a,1),'</pre>';
Darkendorf

15

मुझे लगता है कि var_export(), भूल गए भाई के var_dump()पास सबसे अच्छा आउटपुट है - यह अधिक कॉम्पैक्ट है:

echo "<pre>";
var_export($menue);
echo "</pre>";

वैसे: यह उपयोग करने के लिए आवश्यक नहीं है <pre>var_dump()और var_export()जब आप अपने वेबपेज के स्रोत कोड पर एक नज़र डालते हैं तो पहले से ही स्वरूपित होते हैं।


मैं var_export के बारे में सहमत हूं, लेकिन मुझे इसे <pre> </ pre> के साथ संयोजित करना पड़ा क्योंकि यह उचित प्रारूप में परिणामों का उत्पादन नहीं कर रहा था।
चाए कूपर

3
@ चाया-कूपर यह ठीक से प्रदर्शित पृष्ठ पर स्वरूपित नहीं किया गया है, लेकिन मुझे लगता है कि हेक्सोडस का अर्थ है कि यह " आपके वेब पेज के स्रोत कोड में" -> कोशिश मेनू "दृश्य स्रोत", या फ़ायरफ़ॉक्स में Ctrl-U
fpierat

@fpierrat हाँ, यह वास्तव में मेरा मतलब है। स्पष्ट करने के लिए धन्यवाद।
हेक्सोडस

1
इस दृष्टिकोण का एक लाभ यह है कि आउटपुट को वैध PHP के रूप में स्वरूपित किया जाता है, इसलिए यदि आप चाहते हैं तो आप इसे वापस अपने कोड में कॉपी / पेस्ट कर सकते हैं।
बीन

13

अगर किसी को सरणियों को इतना ठंडा देखना है;) इस विधि का उपयोग करें .. यह आपके ब्राउज़र कंसोल पर प्रिंट हो जाएगा

function console($obj)
{
    $js = json_encode($obj);
    print_r('<script>console.log('.$js.')</script>');
}

आप इस तरह का उपयोग कर सकते हैं ..

console($myObject);

आउटपुट इस तरह होगा .. इतना अच्छा एह !!

यहां छवि विवरण दर्ज करें


5
foreach($array as $v) echo $v, PHP_EOL;

अद्यतन : एक और अधिक परिष्कृत समाधान होगा:

 $test = [
    'key1' => 'val1',
    'key2' => 'val2',
    'key3' => [
        'subkey1' => 'subval1',
        'subkey2' => 'subval2',
        'subkey3' => [
            'subsubkey1' => 'subsubval1',
            'subsubkey2' => 'subsubval2',
        ],
    ],
];
function printArray($arr, $pad = 0, $padStr = "\t") {
    $outerPad = $pad;
    $innerPad = $pad + 1;
    $out = '[' . PHP_EOL;
    foreach ($arr as $k => $v) {
        if (is_array($v)) {
            $out .= str_repeat($padStr, $innerPad) . $k . ' => ' . printArray($v, $innerPad) . PHP_EOL;
        } else {
            $out .= str_repeat($padStr, $innerPad) . $k . ' => ' . $v;
            $out .= PHP_EOL;
        }
    }
    $out .= str_repeat($padStr, $outerPad) . ']';
    return $out;
}

echo printArray($test);

यह प्रिंट करता है:

    [
        key1 => val1
        key2 => val2
        key3 => [
            subkey1 => subval1
            subkey2 => subval2
            subkey3 => [
                subsubkey1 => subsubval1
                subsubkey2 => subsubval2
            ]
        ]
    ]

<? php foreach ($ v के रूप में $ डेटा) echo $ v, PHP_EOL; ?> "एरे" प्रदर्शित करता है
जेवियर

1
ठीक है, फिर आपको दो बार foreach ($ कच्चे के रूप में $ सरणी) foreach ($ v के रूप में $ सरणी) echo $ v, PHP_EOL को पुनरावृत्त करना चाहिए;
यारोनियस

3

print_r()ज्यादातर डिबगिंग के लिए है। यदि आप इसे उस प्रारूप में मुद्रित करना चाहते हैं, तो सरणी के माध्यम से लूप करें, और तत्वों को प्रिंट करें।

foreach($data as $d){
  foreach($d as $v){
    echo $v."\n";
  }
}

प्रतिक्रिया के लिए धन्यवाद, लेकिन यह डेटा को "ऐरे" के रूप में छापता है
जेवियर

@Xavier: क्या आपने मेरे जवाब में अपडेटेड कोड की कोशिश की? आपको दोनों सरणियों के माध्यम से लूप करने की आवश्यकता है। $dataसरणियों की एक सरणी है।
रॉकेट हज़मत

और आपके कोड ने पूरी तरह से काम किया, मैंने अभी / n को एक <br />
Xavier


2

मुझे लगता है कि एक डीबगिंग के लिए print_r का उपयोग करता है। मैं तब किंत जैसे पुस्तकालयों का उपयोग करने का सुझाव दूंगा । यह पठनीय प्रारूप में बड़े सरणियों को प्रदर्शित करने की अनुमति देता है:

$data = [['Natural Child 1', 'Natural Child 2', 'Natural Child 3']];
Kint::dump($data, $_SERVER);

यहां छवि विवरण दर्ज करें


1
यह एक वेनिला PHP समाधान नहीं है, लेकिन निश्चित रूप से उपयोगी और पठनीय आउटपुट प्रदान करता है!
बीन

1
<?php 
//Make an array readable as string
function array_read($array, $seperator = ', ', $ending = ' and '){
      $opt = count($array);
      return $opt > 1 ? implode($seperator,array_slice($array,0,$opt-1)).$ending.end($array) : $array[0];
}
?>

मैं अपने आगंतुकों को एक सुंदर मुद्रित सरणी दिखाने के लिए इसका उपयोग करता हूं


1

Var_dump फ़ंक्शन का उपयोग करके, php में स्वरूपित सरणी को प्रिंट करने का बहुत अच्छा तरीका है।

 $a = array(1, 2, array("a", "b", "c"));
 var_dump($a);

1

मैं कुंजी और उनके मूल्य $ qw = mysqli_query ($ कनेक्शन, $ क्वेरी) प्राप्त करने के लिए इसका उपयोग करता हूं;

while ( $ou = mysqli_fetch_array($qw) )
{
    foreach ($ou as $key => $value) 
    {
            echo $key." - ".$value."";
    }
    echo "<br/>";
}

1

मैं सिर्फ ऑनलाइन टूल का उपयोग करूंगा।


मैंने अभी इसे और अधिक मजबूत बनाने के लिए अद्यतन किया, लिंक के लिए धन्यवाद।
फिलीपिह

1

त्वरित और आसान JSON प्रतिनिधित्व के लिए वन-लाइनर:

    echo json_encode($data, JSON_PRETTY_PRINT);

यदि पहले से ही प्रोजेक्ट के लिए कंपोजर का उपयोग किया जा रहा है, तो सिम्फनी / yaml और की आवश्यकता है:

    echo Yaml::dump($data);

0
echo '<pre>';
foreach($data as $entry){
    foreach($entry as $entry2){
        echo $entry2.'<br />';
    }
}

0

एकल सरणियों के लिए आप प्रत्यारोपण का उपयोग कर सकते हैं, इसमें प्रिंट करने के लिए एक क्लीनर परिणाम है।

<?php
$msg = array('msg1','msg2','msg3');
echo implode('<br />',$msg);
echo '<br />----------------------<br/>';

echo nl2br(implode("\n",$msg));
echo '<br />----------------------<br/>';
?>

बहुआयामी सरणियों के लिए आपको किसी प्रकार के लूप के साथ संयोजन करने की आवश्यकता होती है।

<?php
$msgs[] = $msg;
$msgs[] = $msg;
$msgs[] = $msg;
$msgs[] = $msg;
$msgs[] = $msg;
foreach($msgs as $msg) {
    echo implode('<br />',$msg);
    echo '<br />----------------------<br/>';
}
?>

0

यह print_r()कंसोल अनुप्रयोगों में आउटपुट स्वरूपण को बेहतर बनाने का प्रयास करता है :

function pretty_printr($array) {

  $string = print_r($array, TRUE);

  foreach (preg_split("/((\r?\n)|(\r\n?))/", $string) as $line) {

    $trimmed_line = trim($line);

    // Skip useless lines.
    if (!$trimmed_line || $trimmed_line === '(' || $trimmed_line === ')' || $trimmed_line === 'Array') {
      continue;
    }

    // Improve lines ending with empty values.
    if (substr_compare($trimmed_line, '=>', -2) === 0) {
      $line .=  "''";
    }

    print $line . PHP_EOL;
  }
}

उदाहरण:

[activity_score] => 0
[allow_organisation_contact] => 1
[cover_media] => Array
        [image] => Array
                [url] => ''
        [video] => Array
                [url] => ''
                [oembed_html] => ''
        [thumb] => Array
                [url] => ''
[created_at] => 2019-06-25T09:50:22+02:00
[description] => example description
[state] => published
[fundraiser_type] => anniversary
[end_date] => 2019-09-25
[event] => Array
[goal] => Array
        [cents] => 40000
        [currency] => EUR
[id] => 37798
[your_reference] => ''
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.