簡體   English   中英

PHP in_array無法按預期方式運行

[英]PHP in_array not behaving as expected

這是我的功能:

function checkArray($color,$file) {
    $color = trim($color);
    $settings = getSettings($file,1);
    if (in_array($color,$settings)) return true;
    else return false;
}

在這種情況下,$ settings是一個數組:

Array
(

    [0] => Black
    [1] => Blackpol
    [2] => Blk
    [3] => Blue
    [4] => Bronz
    [5] => Bronze
    [6] => Brz
)

我有此函數循環幾次,每次更改$ color參數。 樣本值是“ Black”,“ Blue”等。長話短說,checkArray()應該很少返回false。

但是,它每次都返回錯誤,並且我無法為我的生命找出原因。 我嘗試了不區分大小寫的搜索,修剪,打印單個輸出並比較字符串(“ Black”與“ Black”)...我對php或數組不是陌生的,但我不知道為什么這可能會返回false。 請幫助!

$ settings的PRINT_R(在if語句之前)

  Array
    (
    [0] => Black

    [1] => Blackpol

    [2] => Blk

    [3] => Blue

    [4] => Bronz

    [5] => Bronze

    [6] => Brz

    [7] => Bz

    [8] => Cherry

    [9] => Gold

    [10] => Gun

    [11] => Gunmet

    [12] => Gunmetal

    [13] => Pol

    [14] => Poly

    [15] => Quentin

    [16] => Rootbeer

    [17] => Vis
    )

VAR DUMP OF $ color(在if語句之前)

string(5) "Black"

到了那里,字符串中有空格。 刪除它們,您就可以了。

設置數組中的值后面可能有換行符嗎?

檢查您的getSettings函數,並確保在那里也修剪值。

好吧, print_r輸出表明每行最后都包含一個\\n換行符。 使用$file還可以指示您從文件中讀取它。 如果是這樣,您只需要調整輸入即可。

您可以使用以下方法修改getSettings以讀取它:

file($file, FILE_IGNORE_NEW_LINES)

或在色彩測試功能中對其進行后處理:

$settings = array_map("trim", $settings);

確保您沒有混合編碼。

可能是一個解決方案:

in_array( mb_strtolower($color, "UTF-8"), $settings)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM