2012-07-12 11 views
-3

이제 배열의 내용을 출력하기 위해 echo를 사용할 수 없다는 것과 foreach를 사용해야한다는 것을 이해합니다. 그러나 어떤 이유로 이것이 작동하지 않습니다. 어떤 아이디어?배열을 PHP로 인쇄하기

$rows = $stmt->fetchAll(); 
foreach ($rows as $key=>$row) 
     { 
     echo "My value at $key is $row"; 
     } 
} 

출력 :

My value at 0 is ArrayMy value at 1 is ArrayMy value at 2 is Array 
+4

귀하의'$의 row' 다른 배열, 그래서 당신은 다차원 배열을 가지고 있고 다른 foreach는 할 필요가() –

+1

'var_dump' 잘못 무엇입니까? – Hamish

+0

Harnish와 같은 배열을 덤프했다면 2 차원 어레이라는 것을 알 것입니다. –

답변

4

fetchAll을 사용하여 PDO에서 가져온 것으로 보입니다.

이 메서드는 배열 (행)의 배열을 반환합니다. 내부 배열에는 column_name => value 요소가 있습니다. 예를 들어 'firstName'과 'lastName'열을 검색 한 경우 첫 번째 레코드의 값은 $rows[0]['firstName']$rows[0]['lastName']입니다.

할 수있는 적절한 방법이 될 것이다 :

$rows = $stmt->fetchAll(); 
foreach ($rows as $key => $row) { 
    foreach ($row as $column => $value) { 
     echo "My $column value for row $key is $value\n"; 
    } 
} 

Protip : 괄호 정렬보기이 정확성을 위해 중요하지만, 더 읽기 코드 :

+0

고맙습니다. 나는 그것이 파이썬과 훨씬 더 유사 할 것이라고 생각했다. –

1

내게 다차원 배열처럼 보인다. var_dump 또는 print_r

var_dump($rows); 
print_r($rows); 
0
//<pre> tag will give you a well formatted version of var_dump 
echo "<pre>"; 
var_dump($rows); 
echo "</pre>"; 
1

$ 행을 시도하는 문자열로 직접 변환 할 수없는 또 다른 배열입니다. 이 기능을 사용하여 배열 내용을 확인할 수 있습니다.

function d($data) 
{ 
    echo '<pre>'; 
    print_r($data); 
    echo '</pre>'; 
} 
d($stmt->fetchAll()); 

더 나은 당신은이 작업을 수행

define('ENVIRONMENT', 'development'); 
function d($data) 
{ 
    if(ENVIRONMENT == 'development') 
    { 
    echo '<pre>'; 
    print_r($data); 
    echo '</pre>'; 
    } 
} 
d($stmt->fetchAll()); 
0

$row의 내용 디버깅이 시도 (당신은 당신의 사이트에 해가되지 않습니다 자사의 호출을 제거 잊어 버린 경우) :

$rows = $stmt->fetchAll(); 

foreach ($rows as $key=>$row) 
{ 
    echo "First key: $key | "; 

    foreach($row as $subkey => $subrow) 
    { 
     echo "Subkey: $subkey | Value: $subrow <br />"; 
    } 

} 

을 Addiotinally, var_dump(), print_r()var_export()과 같은 기능을 사용하는 것이 중요합니다, 그들은 당신을 위해 많은 문제를 방지 할 것입니다.

0
//@parram $data-array,$d-if true then die by default it is false 
//@author Your name 

function p($data,$d = false){ 

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

    if($d == TRUE){ 
     die(); 
    } 
} // END OF FUNCTION 

사용하게하지 않습니다 이 함수는 문자열이나 배열을 할 필요가있을 때마다 매번 큰 일을합니다. 2 Patameters 1 $ 데이터가 있습니다 - 그것은 배열 또는 문자열 2 $ d를 할 수 있습니다 -이 FALSE하지만 true로 설정하면 다음은 귀하의 경우에는 다이() 함수

를 실행합니다 기본으로 당신 다음과 같이 쓸 수 있습니다 ..

$rows = $stmt->fetchAll(); 

foreach ($rows as $key=>$row) { 
     p($rows); // to use p function use above code for p() in your code 
} 
관련 문제