programing

판독 가능한/계층 형식으로 배열 표시

javaba 2022. 9. 16. 22:38
반응형

판독 가능한/계층 형식으로 배열 표시

어레이의 데이터를 꺼내기 위한 코드는 다음과 같습니다.

<?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($data)을 사용하면 다음과 같이 표시됩니다.

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

다음과 같이 읽었으면 합니다.

내추럴 차일드 1
내추럴 차일드 2
내추럴 차일드 3

대신

print_r($data);

해라

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

기본적인 기능이 있습니다.

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>";}

이것을 시험해 보세요.

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

대신해서print_r($data)

그런 것 같아요var_export(), 잊혀진 형제var_dump()최고의 출력을 자랑합니다.더 콤팩트합니다.

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

덧붙여서: 반드시 사용할 필요는 없습니다.<pre>.var_dump()그리고.var_export()웹 페이지의 소스 코드를 보면 이미 포맷되어 있습니다.

어레이를 표시할 필요가 있는 경우는, 이 방법을 사용합니다.브라우저 콘솔로 인쇄됩니다.

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

이렇게 쓸 수 있어요.

console($myObject);

출력은 다음과 같습니다.멋있어!!

여기에 이미지 설명 입력

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
            ]
        ]
    ]

print_r()대부분 디버깅용입니다.이 형식으로 인쇄하려면 배열을 반복하여 요소를 인쇄합니다.

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

이것이 더 간단한 해결책일 수 있습니다.

echo implode('<br>', $data[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] => ''

디버깅에는 print_r을 사용할 수 있습니다.Kint와 같은 도서관을 이용하는 것이 좋습니다.이것에 의해, 큰 어레이를 판독 가능한 형식으로 표시할 수 있습니다.

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

여기에 이미지 설명 입력

JSON을 쉽고 빠르게 표현하기 위한 한 줄:

    echo json_encode($data, JSON_PRETTY_PRINT);

프로젝트에 이미 컴포저를 사용하고 있는 경우 symfony/yaml이 필요합니다.

    echo Yaml::dump($data);
echo '<pre>';
foreach($data as $entry){
    foreach($entry as $entry2){
        echo $entry2.'<br />';
    }
}
<?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];
}
?>

방문객에게 인쇄된 예쁜 어레이를 보여주기 위해 사용합니다.

var_dump 함수를 사용하여 포맷된 어레이를 php로 인쇄하는 매우 좋은 방법입니다.

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

키와 키 값 $qw = mysqli_mysqli connection, $sqli)를 취득하기 위해 사용합니다.

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

저는 그냥 온라인 툴을 사용합니다.

  • 먼저 print_r(your_array)를 실행합니다.

  • 결과를 복사하여 http://phillihp.com/toolz/php-array-beautifier/에 붙여넣습니다.

단일 어레이의 경우 삽입을 사용할 수 있으므로 인쇄 결과가 더 깔끔해집니다.

<?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/>';
}
?>

언급URL : https://stackoverflow.com/questions/5393085/display-an-array-in-a-readable-hierarchical-format

반응형