2015-10-01 18 views
5

Dễ dàng, nhưng tôi không thể tìm thấy câu trả lời.Làm thế nào để thay đổi lớp kết quả echo đầu tiên trong PHP?

Tôi muốn liệt kê các danh mục con để tạo các tab trong mã bên dưới. Điều này làm việc tốt trong đầu ra của tôi. Nhưng tab đầu tiên cần <li class= "selected" > để hiển thị nội dung khi tải trang.

Làm cách nào để buộc kết quả echo đầu tiên bao gồm một lớp trên phần tử <li>?

.

.

.

[Đầu ra]

Thực tế: .......... Danh mục 1 | Danh mục 2 | Danh mục 3

Cần thiết: .......... Danh mục 1 * | Danh mục 2 | Thể loại 3

* class = "chọn"

<ul class="cd-tabs-navigation"> 

    <?php 
    $argumentos = array(
    'hide_empty' => 1, 
    'child_of' => 44, 
); 
    $categories = get_categories($argumentos); 
    foreach($categories as $category) { 
    echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>'; 
    } 
    ?> 

    </ul> 

.

.

[EDIT]

Giải pháp của Lal. Cảm ơn mọi người!

foreach($categories as $category) { 
    if(++$i==1) 
    echo '<li class="selected"><a class="selected" data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>'; 
    else 
    echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>'; 
    } 
+0

tại sao bạn muốn thêm lớp học? là nó để áp dụng phong cách? – Lal

+0

Tôi cần lớp học để hoạt động một tập lệnh. Tôi đang sử dụng hệ thống mã này. http://codyhouse.co/gem/responsive-tabbed-navigation/ – rdllngr

Trả lời

3

tôi sẽ đề nghị bạn sử dụng một bộ đếm .. Không chắc nếu điều này là đúng cách để làm điều đó ..

Thay đổi của bạn foreach như sau

$i=0; 
foreach($categories as $category) { 
    if($i==0) 
    echo '<li class="selected"><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>'; 
    else 
    echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>'; 
    $i++; 
    } 

HOẶC

Như được đề xuất trong câu trả lời here, bạn có thể sử dụng array_shift() để xử lý mục đầu tiên trong mảng separatley.

Đó là, làm điều đó như sau

$first = array_shift($categories); 
echo '<li class="selected"><a data-content="' . $first ->slug . '" href="#' . $first ->slug . '">' . $first ->name . '</a></li>'; 
foreach($categories as $category) { 
    echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>'; 
} 

đọc về nhiều array_shift() trong docs

+0

Hầu như! Tôi chỉ cần giá trị (++ $ i == 1) thay vì 0 để làm việc! Tôi đã bao gồm mã cuối cùng được đề cập. Đơn giản và sạch sẽ. Cảm ơn bạn rất nhiều! – rdllngr

+0

Great .. :) Vui mừng vì nó đã giúp ... – Lal

+2

@Lal Bạn không tăng '$ i' trong ví dụ đầu tiên của bạn, vì vậy' $ i == 0' sẽ luôn đúng. – Drown

-1

Bạn có thể sử dụng cú pháp này cho foreach. Sử dụng cú pháp này, bạn có $ k chỉ số của lần lặp, trong khi trong $ v giá trị của mảng mà bạn đang lặp lại. Vì vậy, nếu $ k == 0 bạn đang ở trong lần lặp đầu tiên.

+0

Anh ấy đang làm điều đó – RiggsFolly

+0

Điều này không trả lời được câu hỏi. – rnevius

+0

Tại sao nó không trả lời? Nếu anh ta sử dụng cú pháp này, anh ta có thể kiểm tra biến $ key. Nếu đó là 0 anh ta trong lần lặp đầu tiên, vì vậy anh ta có thể thêm một lớp vào html. – gmast

1

giải pháp Lal sẽ hoạt động tốt (miễn là bạn tăng $i), nhưng đây là một cách đơn giản để làm nó không có biến số bổ sung cho bộ đếm:

foreach($categories as $index => $category){ 
    if(!$index) echo "This is the first element"; 
    else echo "This is not the first element"; 
} 

(không chắc chắn đây có phải là bản chỉnh sửa hay câu trả lời vì nó cơ bản là t cùng một phương pháp nhưng với synthax hơi đơn giản hơn một chút, tôi sẽ đăng câu trả lời ngay bây giờ)

Các vấn đề liên quan