0

私はこのオブジェクトを持っています

$data = simplexml_load_string('<xml><admin>0</admin></xml>');

どこ $data->admin = "0" (string). したがって、文字列 0 の場合、次は常に true を返します。

if($data->admin) {
    echo 'is admin';
}

変数をキャストすることにより、これは正しく機能します

if((int)$data->admin) {
    echo 'is admin';
}

しかし、型キャストを行う必要がないように、オブジェクト内のデータ型を変更できるかどうか (配列内で行うように) はまだ疑問に思っています。

4

4 に答える 4

0

PHPでこれを行う方法はありません。タイプキャストする代わりに、このソリューションを試すことができます。

if ($data->admin != 0){ 
    //is admin
}
于 2012-10-20T03:25:03.077 に答える
0

これを試すこともできます) 良い方法だとは思いませんが) ここでの最善の方法は、ゼロを再度比較し、型キャストを行わないことです。型キャストが必要な場合は、次のことができます。ただし、1 の代わりに 3 つの操作を行うことはお勧めできません)

$data = simplexml_load_string('<xml><admin>0</admin></xml>');
if(strip_tags($data->admin->asXML()))
{
//is admin
}
于 2012-10-20T15:01:21.943 に答える
0

SimpleXML ではありません。できることは、代わりにDOMDocumentを使用することです。SimpleXML の使用はお勧めしません。

于 2012-10-20T03:20:34.230 に答える
0

文字列が「0」の場合、false を返します。int にキャストしても、false が返されます。) そして最後に、論理式はブール値にキャストされます。だから何をしようとしても無駄だ)

于 2012-10-20T03:21:31.593 に答える