2

私はコードのこの小さな部分を持っています:

$company = array('relation' => $_SESSION['username']);
$companyresponse = $wcfclient->GetCompany($company);
    foreach ($companyresponse->GetCompanyResult as $key => $value){
    echo $value[0]; //This is the name of the company

    if ($value[1] == TRUE){
       echo "Company blocked";
    }
    elseif($value[1] == FALSE){
       echo "Company NOT blocked";
    }
    echo $value[1]; //This gives me the correct result, in this case: FALSE

$value[1] の結果は FALSE ですが、if ステートメントを渡すと "Company locked" が返されるため、$value[1] は TRUE ですが、FALSE である必要があります。

正しい値が返されない理由を誰かに教えてもらえますか?

私も試してみました:

if ($value[1] == 1){
   echo "Company blocked";
}
else{
   echo "Company NOT blocked";
}

これにより、値が FALSE になりますが、どういうわけか、if ステートメントによって値が TRUE に変更されます。

var_dump($value[1]) 

通常はブロックされている会社を試すと、次の正しい結果が得られます。

string(4) "True" Company blockedTrue

4

3 に答える 3

1

これがうまくいくことを願っています

elseif(!isset($value[1]) || $value[1] === FALSE){
  echo "Company NOT blocked";
}

あなたのコメントを読んだ後、私はこの解決策を作りました。ばかげているように見えますが、うまくいけばうまくいきます

if ($value[1] == "True"){
   echo "Company blocked";
}
elseif($value[1]  == "False"){
   echo "Company NOT blocked";
}
于 2013-07-10T09:32:40.603 に答える
0

$value[1] には、ブール値の TRUE または FALSE ではなく、テキスト リテラル「TRUE」または「FALSE」が含まれているように見えます。

コードを変更してif (strcasecmp($value[1], "TRUE") == 0)){ 、そうであるかどうかをテストします

echo $value[1]; //This gives me the correct result, in this case: FALSE

echo はそのようなブール値を出力しません。文字列の長さが真である場合、文字列をブール値にキャストすると。常に真の道を行くようにする

編集:

あなたの編集は、この「string(4) "True" Company blockedTrue」がブール値ではなく文字列であることを確認しています。上記のコードは機能するはずです

于 2013-07-10T09:44:54.487 に答える