Olmadan Listeye dizi dönüştürmek nasıl. = PHP?

3 Cevap php

Ben aşağıdaki dizi çıkışları var.

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
)
...
...

Şimdi aşağıdakilerden gibi yapmak istiyorum.

19 için örneğin

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

Ben aşağıdaki çalıştı. Bu ancak Codeigniter PHP çalışıyor. Yani birisi bana dışarı ile yapmak için başka bir yol söyleyebilir umuyorum. =

Şimdiden teşekkürler.

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

Ve aşağıdaki modelin detaylar.

$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>';
...
...

- GÜNCELLEME -

Kontrolör

Code here

Görünüm

Code here

Hatalar

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
)
...
...

3 Cevap

Bu biraz basitleştirilmiş olabilir. İlk olarak, CI veritabanı sınıfının Active Record bakmak, bu DB daha kolay% 100 çağrıları yapacaktır.

Neden geri görünümüne dizi geçemez ve orada enjekte?

Sizin bakış gibi görünebilir

<?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; ?>

Etkinlik detayları sizin dizi boyunca ve listenizi yapmak döngü olacak.

Ofset dizisi bu noktada mevcut değildir. Yani atamak ilk kez, bir . kullanarak ekleme yok. Bu ilk atamadan sonra, dizin var, ve bir . Tamam kullanıyor.

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

Bildirimi = yerine .= arasında

Yani bir örnek vermek için:

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

0 dizin yok gibi yanlıştır.

Biz .= dışarı genişletmek, eğer olur çünkü Benzer şekilde, $myArray[0] .= "something"; yanlıştır:

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

Yani görüyoruz Bildirimi özen, ama hepimiz er ya da geç fark, bunun yerine sadece çok kötü bir uygulama thats bir PHP dize içinde HTML kodunu baskı Scott'ın çözümü kullanmanız gerekir.

Pleaser NEVER sizin model html oluşturmak, MVC deseni kötüye şu. Ve bunu yapmak için concatı dizeleri Yüklü. Scott açıklandığı gibi, (bazı yerlerde) yankılanırken değerleri kullanarak php düz html, kendinize bir görünüm yazın.