Drupalのテーマを購入しましたが、サポートが欠けています。だから私は自分自身でそれに取り組むと思った。私はPHPプログラミングには比較的新しいので、簡単に教えてください:)PHPで文字列と整数を正しく比較するには?
私が入手したエラーは: Notice:Drupal \ Core \ Field \ FieldItemListクラスのオブジェクトをtheme_css_alterのintに変換できませんでしたif文)
はエラーに掘り、それはこの中で、コードの最初の行から来た:
if(isset($node->nid) && $node->nid == 90){
//do stuff
}
私は私の研究を行なったし、そのPHPのエラーがあるため、おそらく==演算子を使用している場合ことがわかりました$ node-> nidは文字列としてフェッチされ、90は整数で、nidをオンザフライで変換することはできません。
可能な解決策Google検索で見つかった解決策では、===演算子を使ってnidを整数(必要以上に複雑に聞こえる)として取得する「ゲッター」を作成していました。私は90を文字列に変換するとそれも機能するだろうと私自身は推測しています。
今、試運転を行うと===エラーが表示されなくなりますが、私の研究では、値と型が等しい場合にのみ動作し、文字列と整数、私はそれが常にちょうど偽であると仮定します。
そう...
- は、私が(文字列として)PHP 90に(整数として)90を==ていないことを言って、正しいですか?
- 私は、==の代わりに===を使用すると、文字列と整数を比較する正しい方法ではないことを訂正していますか?
- $ node-> nid ==(string)90 {このif文を比較する正しい方法ですか?この比較を行う最も正しい方法は何ですか?
文字列を数字と比較すると、一般的に期待通りの結果が得られます。エラーメッセージは '$ node-> nid'が文字列ではなく' FieldItemList'であることを示しています。 – Barmar
Barmarさんに感謝します。私はnidは文字列であると仮定していました。なぜなら、通常はどこかにあり、FieldItemListはDrupal 8のPHPクラスだけだったからです。 –
文字列に変換するメソッドがあるかもしれないので、文字列が必要な場所で使用できますが、実際には文字列ではありません。 – Barmar