簡體   English   中英

in_array意外結果

[英]in_array unexpected results

你好,我有一個看起來像這樣的數組,

    Array
(
    [0] => 40's
    [1] =>  50's
    [2] =>  60's
)

和一些看起來像這樣的代碼,

<?php if(isset($playable_age) && in_array('40\'s', $playable_age)) { $set = TRUE; } else { $set = FALSE; } ?>
<div class="checkbox"><?php echo $this->formbuilder->checkbox( 'playable_age[]', "40's", "40's", $set ); ?></div>
<?php if(isset($playable_age) && in_array('50\'s', $playable_age)) { $set = TRUE; } else { $set = FALSE; } ?>
<div class="checkbox"><?php echo $this->formbuilder->checkbox( 'playable_age[]', "50's", "50's", $set ); ?></div>
<?php if(isset($playable_age) && in_array('60\'s', $playable_age)) { $set = TRUE; } else { $set = FALSE; } ?>
<div class="checkbox"><?php echo $this->formbuilder->checkbox( 'playable_age[]', "60's", "60's", $set ); ?></div>

現在第一個if語句返回true,但是第二個和第三個如果返回false,即使數組中存在50和60的值,為什么會這樣?

看起來在數組中這些值之前有一個空格:

[1] =>  50's
[2] =>  60's
       ^

第一個值沒有看到的東西:

[0] => 40's

因為您有語法錯誤。

你可以這樣做:

<?php 
$playable_age = array(0=>'40\'s',1=>'50\'s',2=>'60\'s');
if(isset($playable_age) && in_array('40\'s', $playable_age)) { $set = TRUE; echo "1"; } else { $set = FALSE; echo "2"; } 
if(isset($playable_age) && in_array('50\'s', $playable_age)) { $set = TRUE; echo "3"; } else { $set = FALSE; echo "4"; } 
if(isset($playable_age) && in_array('60\'s', $playable_age)) { $set = TRUE; echo "5"; } else { $set = FALSE; echo "6"; } 
if(isset($playable_age) && in_array('70\'s', $playable_age)) { $set = TRUE; echo "7"; } else { $set = FALSE; echo "8"; } 
?>

在對數組執行邏輯檢查之前,創建一個用戶定義的函數並使用array_walk調用它以對每個數組值進行trim()。

暫無
暫無

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

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