Asked Sep 27th, 2020 9:02 a.m. 148 0 2
  • 148 0 2
0

Cách xử lý array trường hợp này trong PHP

Share
  • 148 0 2

Giả sử $array là kết quả của một truy vấn MysQL. $array có cấu trúc như sau:

$array =array("Tú Xương","Tú Mỡ","Tú Sụn","Tú Bà","Tú Ông","Tú Váp");

Bây giờ mình cần hiển thị nội dung như thế này:

Tú Xương, Tú Mỡ, Tú Sụn và 3 người khác.

Đơn giản mà phức tạp. Hy vọng ai đó có thể giúp mình.

2 ANSWERS


Answered Sep 27th, 2020 9:40 a.m.
0

Mình tự có câu trả lời:

$count = COUNT($array) - 3;

list( $first, $second, $third) = $array;

echo $first . ', ' . $second . ', ' . $third.' và '.$count .' người khác.';

Share
Avatar Tran Duc Thang @thangtd90
Sep 27th, 2020 9:48 a.m.

Bài toán này bạn phải check xem $count<=3 không đã.

Nếu mảng mà có không quá 3 phần tử thì chạy sẽ bị lỗi, hoặc in ra message của bạn sẽ không hợp lý (Tú Xương, Tú Mỡ, Tú Sụn và 0 người khác)

0
| Reply
Share
Avatar Dr Dokkan @dokkan7
Sep 27th, 2020 10:12 a.m.

@thangtd90 Ok, mình hiểu mà, còn phải check cả trường hợp chỉ có 1, 2, hoặc 3 người trong array vì trong hiển thị có dấu phảy "," và chữ "và". Bài toán thực tế của mình là hiển thị avatar nên đỡ được phần lằng nhằng này. Cảm ơn bạn.

+1
| Reply
Share
Answered Sep 27th, 2020 4:42 p.m.
0

function tham khảo

<?php
$array =array("Tú Xương","Tú Mỡ","Tú Sụn","Tú Bà","Tú Ông","Tú Váp");

function userLimit($users = [], $limit = 3) {
    $str = '';
    $users_chunk = array_chunk($users, $limit);
    $str .= count($users_chunk) ? implode(', ', $users_chunk[0]) : '';
    if(count($users_chunk) > 1) {
        $str .= " và ".(count($users) - $limit)." người khác";
    }
    return $str;
}

echo userLimit($array);
// Tú Xương, Tú Mỡ, Tú Sụn và 3 người khác
?>

Share
Viblo
Let's register a Viblo Account to get more interesting posts.