2013-09-30 8 views
0

나는 다음과 같은 코드가 있습니다 여기에변수로 다차원 배열의 값을 저장

$res = $db->getArticles($db); 
$hey = print_r($res, TRUE); 
echo $hey['0']; 

$db->getArticles 코드입니다 :

public function getArticles() { 
    $array = array(); 
    try { 
     $sth = $this->db->prepare("SELECT * FROM posts ORDER BY id"); 
     $sth->execute(); 
     foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $row) { 
      $array[] = $row; 
     } 
     return $array; 
    } catch (Exception $e) { 

    } 
} 

논리는 함수가 데이터베이스에 쿼리에 모든 것을두고 있다는 것입니다 배열. 테이블의 행 수는 항상 매우 낮으므로 성능에는 문제가 없습니다.

다음은 위의 첫 번째 코드의 출력이다. "배열"

echo $hey['0']; // prints "A" (without the quotes). 
echo $hey['1']; // prints "r" 
echo $hey['2']; // prints "r" 
echo $hey['3']; // prints "a" 
echo $hey['4']; // prints "y" 

당신이 볼 수 있듯이, 그것은 단어를 철자

echo $hey는 다음을 인쇄 :

Array ([0] => Array ([id] => 1 [author] => 0 [content] => This Is a Test [publication_date] => 1380380992)) 

내 최종 목표는 변수에 각각의 값을 저장하고 그것으로 뭔가를 할 것입니다. 이것은 모든 배열에서 실행되는 for 루프 내에서 발생하므로 각 행에서 정보를 얻을 수 있습니다.

내가 뭘 잘못하고 있니?

+0

이 ['print_r']이 (http://php.net/manual/en/function.print-r.php)이 단지 배열을 자세히 설명하는 문자열을 인쇄는'TRUE '옵션은 대신 문자열을 반환 그것을 직접 인쇄하는 것. 실제 데이터 배열을 변수 –

답변

0
$array = array(array(ID => 1, 
        author => 0, 
        content => "This Is a Test", 
      publication_date => 1380380992 
       ) 
     ); 



echo $array['0']['author']; 

이것은 나를 위해 작동 그냥 ... echo $array['0']['author']; 에코와 당신이 필요로하는 분야에서 저자를 교체합니다.

+0

에 넣지 않습니다. 빠른 답장을 보내 주셔서 감사합니다! 나는 그것을 시도했지만 여전히 똑같은데, 나는 너무주의를 가지고있다. 'Warning : 잘못된 문자열 offset 'content in in ... A'. 해당 줄에 오류가 있습니다. – DemCodeLines

+0

다시 시도해 볼 수 있습니까? –

+0

'echo $ hey [ '0'] [ '0']; '경고없이 그냥 "A"를 출력하지만'echo $ hey ['0 ']하면 "Notice : Uninitialized string offset : 1" – DemCodeLines

1
$hey = print_r($res, TRUE); 

이 정보는 배열 정보를 제공하는 문자열 $res을 반환합니다. 에코를 표시하면 표시된 것처럼 print_r($res);이 표시되는 것과 동일하게 표시되어야합니다. $res은 이미 쿼리 데이터의 배열이므로 루프 오버합니다.

foreach($res as $row) { //row loop 
    foreach($row as $col) { //column loop 
    //do something 
    } 
} 
+0

echo $ res [$ row] [$ col];'로 대체하려고 시도하고 echo line에 잘못된 "offset type"이 4 번 시도되었다. – DemCodeLines

+0

변수는 단지'$ col' 일 것입니다. 중첩 된 * for * 루프를 만든 경우 구문은 사용자가 시도한 것과 같습니다. –

관련 문제