Yêu cầu thg 9 27, 2020 9:02 SA 149 0 2
  • 149 0 2
0

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

Chia sẻ
  • 149 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 CÂU TRẢ LỜI


Đã trả lời thg 9 27, 2020 9:40 SA
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.';

Chia sẻ
Avatar Tran Duc Thang @thangtd90
thg 9 27, 2020 9:48 SA

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)

Avatar Dr Dokkan @dokkan7
thg 9 27, 2020 10:12 SA

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

Đã trả lời thg 9 27, 2020 4:42 CH
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
?>

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí