2017-10-17 11 views
1

文字列として扱われます、これは私のコードです:PHP最初のインデックスが、私はこの短いを維持します

<?php 

$arr = array(
    1, 
    2, 
    3, 
    "x" => "aaa", 
    "y" => "bbb" 
); 

foreach($arr as $k => $v){ 

    if($k !="y" && $k != "x") { 
     echo $v . " "; 
    } 

} 

?> 

、これが結果です:

2 3 

、それは、このかのように動作します

$example = 0; 
if ($example == 'x' || $example == 'y') { 
    echo "true"; 
} 

は、何もせずに「真」をエコーアウトします。


は基本的に、私の質問は:0は「X」と同じか「y」のない場合、なぜそれが、配列の最初の要素をエコー-INGのスキップのでしょうか?

+0

それを読み返すと、質問のタイトルは非常に誤解を招くようですが、私はそれにタイトルを付けるのか分かりません。 – Whims

+3

キーの '0'値のため、'!= 'は'!== 'よりも寛大です。後者を試して、あなたが探しているものを手に入れましょう。 – aynber

+2

[php =!と!==と等しくない]重複している可能性があります(https://stackoverflow.com/questions/3641819/php-not-equal-to-and) – aynber

答えて

4

==はあなたのためにタイプを並べ替えます。

0intなので、intにyxをキャストしようとしています。これは1として解析できず、0になります。文字列 '0x'は0になり、一致します。

良いものです!==

http://sandbox.onlinephpfunctions.com/code/bed936181e386ddfe75e4ef92771bf61ad2e7915

<?php 

$arr = array(
    1, 
    2, 
    3, 
    "x" => "aaa", 
    "y" => "bbb" 
); 

foreach($arr as $k => $v){ 

    if($k !=="y" && $k !== "x") { 
     echo $v . " "; 
    } 

} 
// result: 
// 1 2 3 

source

+1

'0'もfalse-yの値です。私はそれが文字をintにキャストすること以上のものを使っていると思います。 – aynber

+0

私はこの答えを見たことがないと答えるつもりはありません、ありがとうございました。素晴らしい答え! – Ingo

2

で行くには、私が代わりに使用するのでは、修正を見つけたと思う!=の場合では、あなたの評価の両方にあなたはif文を次のように変更してください:

if($k !== "y" && $k !== "x") 

上記のUnamata Sanataraiの答えをよくご説明します。

関連する問題