2010-01-17 4 views
2

다음 배열 출력이 있습니다.없이 배열로 배열을 변환하는 방법 =. PHP에서?

Array 
(
    [day] => 17 
    [eventContent] => event 1 of 17th 
    [eventTitle] => 17th event 1 
) 

Array 
(
    [day] => 19 
    [eventContent] => event 1 of 19th 
    [eventTitle] => 19th event 1 
) 

Array 
(
    [day] => 05 
    [eventContent] => event 1 of 5th 
    [eventTitle] => 5th event 1 
) 

Array 
(
    [day] => 17 
    [eventContent] => event 2 of 17th 
    [eventTitle] => 17th event 2 
) 

Array 
(
    [day] => 19 
    [eventContent] => event 2 of 19th 
    [eventTitle] => 19th event 2 
) 

Array 
(
    [day] => 19 
    [eventContent] => event 3 of 19th 
    [eventTitle] => 19th event 3 
) 
... 
... 

이제 다음과 같이 만들고 싶습니다. 19

<li> 
<span class="title">19th event 1</span> 
<span class="desc">event 1 of 19th</span> 
</li> 
<li> 
<span class="title">19th event 2</span> 
<span class="desc">event 2 of 19th</span> 
</li> 
<li> 
<span class="title">19th event 3</span> 
<span class="desc">event 3 of 19th</span> 
</li> 

에 대한 예를 들어

나는 다음을 시도했다. PHP에서는 제대로 작동하지만 Codeigniter에서는 작동하지 않습니다. 그래서 누군가가 나와 함께 할 다른 방법을 말해 줄 수 있기를 바랍니다. =

미리 감사드립니다.

$events[intval($row_event->day)] .= '<li><span class="title">' 
.stripslashes($row_event->eventTitle). 
'</span><span class="desc">'.stripslashes($row_event->eventContent). 
'</span></li>'; 

그리고 다음은 모델의 세부 사항입니다.

$events = array(); 

//query the database for events between the first date of the month and the last of date of month 
// $result = mysql_query("SELECT DATE_FORMAT(eventDate,'%d') AS day,eventContent,eventTitle FROM eventcal WHERE eventDate BETWEEN '$current_year/$current_month/01' AND '$current_year/$current_month/$total_days_of_current_month'"); 

$query = $this->db->query("SELECT DATE_FORMAT(eventDate,'%d') AS day,eventContent,eventTitle FROM eventcal WHERE eventDate BETWEEN '$current_year/$current_month/01' AND '$current_year/$current_month/$total_days_of_current_month'"); 
foreach ($query->result_array() as $row_event) 
{ 

$events[intval($row_event['day'])] .= '<li><span class="title">' 
.stripslashes($row_event['eventTitle']).'</span><span class="desc">' 
.stripslashes($row_event['eventContent']).'</span></li>'; 
... 
... 

--UPDATE--

컨트롤러

Code here

보기

Code here

오류

A PHP Error was encountered 

Severity: Notice 

Message: Undefined offset: 17 

Filename: models/mcalendar_one.php 

Line Number: 38 

Array 
(
    [day] => 17 
    [eventContent] => event 1 of 17th 
    [eventTitle] => 17th event 1 
) 

A PHP Error was encountered 

Severity: Notice 

Message: Undefined offset: 19 

Filename: models/mcalendar_one.php 

Line Number: 38 

Array 
(
    [day] => 19 
    [eventContent] => event 1 of 19th 
    [eventTitle] => 19th event 1 
) 
... 
... 
+0

"PHP에서 작동하지만 Codeigniter에서는 작동하지 않는다"는 것은 무엇을 의미합니까? 보기 또는 컨트롤러에 코드가 있습니까? – Boldewyn

+0

답장을 보내 주셔서 감사합니다. 업데이트 됨. – shin

답변

4

이것은 상당히 단순화 할 수 있습니다. 첫째, CI의 데이터베이스 클래스에서 Active Record를 보면 DB 호출을 100 % 쉽게 할 수 있습니다.

왜 배열을 다시 뷰로 전달하여 삽입 할 수 없습니까?

귀하의보기는 목록을 만들 것입니다 루프 이벤트 정보의 배열을 통해

<?php foreach ($row_event as $event) : ?> 
    <li> 
    <span class="title"><?php echo $event->eventTitle; ?></span> 
    <span class="desc"><?php echo $event->eventContent; ?></span> 
    </li> 
<?php endforeach; ?> 

처럼 보일 수 있습니다.

3

이 시점에서 배열 오프셋이 없습니다. 처음 할당 할 때 .을 사용하여 추가하지 마십시오. 이 첫 번째 할당 후에는 인덱스가 존재하고 .을 사용하면 좋습니다.

$myArray = array(); 
echo $myArray[0]; // Undefined offset 

은 0 번째 인덱스가 존재하지 않는 잘못된 :

$events[intval($row_event['day'])] = '<li><span class="title">' 

공지 사항 = 대신

.=의 그래서 예를 제공합니다. 우리가 .= 밖으로 확장하는 경우, 그것은되기 때문에

마찬가지로, $myArray[0] .= "something";이 잘못되었습니다 :

$myArray[0] = $myArray[0] . "something"; // see the problem? 

당신이보고있는 공지의주의를 기울여야한다, 그러나 당신은 HTML 밖으로 인쇄의 스콧의 솔루션을 대신 사용해야 우리가 모두 조만간 실현하는 매우 나쁜 습관 인 PHP 문자열 내부의 코드.

1

Pleaser NEVER 모델에 html을 작성하면 MVC 패턴이 남용됩니다. 그리고 concat 문자열을 그렇게하지 마십시오. 스콧 (Scott)이 설명한 것처럼 평범한 HTML로 (어떤 곳에서는) php를 사용하여 값을 표시합니다.

관련 문제