Hướng dẫn php in_array ignore case - php in_array bỏ qua trường hợp

Trên đây là chính xác nếu chúng ta cho rằng các mảng chỉ có thể chứa các chuỗi, nhưng các mảng cũng có thể chứa các mảng khác. Ngoài ra, chức năng in_array () có thể chấp nhận một mảng cho $ kim, vì vậy strtolower ($ kim) sẽ không hoạt động nếu $ kim là một mảng và mảng_map ('strtolower', $ Haystack) sẽ không hoạt động nếu $ Haystack chứa khác Các mảng, nhưng sẽ dẫn đến "cảnh báo PHP: strtolower () hy vọng tham số 1 sẽ là chuỗi, mảng được đưa ra".

Example:

$needle = array('p', 'H');
$haystack = array(array('p', 'H'), 'U');

Vì vậy, tôi đã tạo ra một lớp trợ giúp với các phương thức liên quan, để làm cho kiểm tra in_array () nhạy cảm trường hợp và không nhạy cảm với trường hợp. Tôi cũng đang sử dụng mb_strtolower () thay vì strtolower (), vì vậy các mã hóa khác có thể được sử dụng. Đây là mã:

class StringHelper {

public static function toLower($string, $encoding = 'UTF-8')
{
    return mb_strtolower($string, $encoding);
}

/**
 * Digs into all levels of an array and converts all string values to lowercase
 */
public static function arrayToLower($array)
{
    foreach ($array as &$value) {
        switch (true) {
            case is_string($value):
                $value = self::toLower($value);
                break;
            case is_array($value):
                $value = self::arrayToLower($value);
                break;
        }
    }
    return $array;
}

/**
 * Works like the built-in PHP in_array() function — Checks if a value exists in an array, but
 * gives the option to choose how the comparison is done - case-sensitive or case-insensitive
 */
public static function inArray($needle, $haystack, $case = 'case-sensitive', $strict = false)
{
    switch ($case) {
        default:
        case 'case-sensitive':
        case 'cs':
            return in_array($needle, $haystack, $strict);
            break;
        case 'case-insensitive':
        case 'ci':
            if (is_array($needle)) {
                return in_array(self::arrayToLower($needle), self::arrayToLower($haystack), $strict);
            } else {
                return in_array(self::toLower($needle), self::arrayToLower($haystack), $strict);
            }
            break;
    }
}
}

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

/**
* Vỏ không nhạy cảm in_array ().
*
* @param trộn $ giá trị kim để tìm kiếm.
* Mảng @param $ mảng Haystack để tìm kiếm.
*
* @return Bool
*/
functionin_arrayi ($ kim, $ Haystack) in_arrayi($needle, $haystack)
{
trả lại in_array (strtolower ($ kim), mảng_map ('strtolower', $ Haystack))); in_array(strtolower($needle), array_map('strtolower', $haystack));
}

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây.Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn.Tìm hiểu thêm về các ký tự unicode hai chiều

/**
* Vỏ không nhạy cảm in_array ().
*
* @param trộn $ giá trị kim để tìm kiếm.
* Mảng @param $ mảng Haystack để tìm kiếm.
* @return Bool
*
* @return Bool
*/
functionin_arrayi ($ kim, $ Haystack) in_arrayi($needle, $haystack, $strict)
{
trả lại in_array (strtolower ($ kim), mảng_map ('strtolower', $ Haystack))); in_array(strtolower($needle), array_map('strtolower', $haystack), $strict);
}