質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PhpSpreadsheet

PhpSpreadsheetは、PHPExcelの後継であるPHPライブラリです。新規Excelファイルの作成や既存Excelファイルの読み書き、ファイル編集など一連の操作を無償で行うことができます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

XHTML

XHTMLは、eXtensible HyperText Markup Languageの略であり、SGMLベースであるHTMLとは違って、有効なXMLドキュメントにもなるHTMLアプリケーションです。XMLベースのツールを用いて生成されるHTMLページのためによく使われるマークアップ言語です。

Q&A

0回答

187閲覧

配列の値をif文で正しく比較できない

phpsyoshinsya

総合スコア156

PhpSpreadsheet

PhpSpreadsheetは、PHPExcelの後継であるPHPライブラリです。新規Excelファイルの作成や既存Excelファイルの読み書き、ファイル編集など一連の操作を無償で行うことができます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

XHTML

XHTMLは、eXtensible HyperText Markup Languageの略であり、SGMLベースであるHTMLとは違って、有効なXMLドキュメントにもなるHTMLアプリケーションです。XMLベースのツールを用いて生成されるHTMLページのためによく使われるマークアップ言語です。

0グッド

0クリップ

投稿2023/01/09 04:23

編集2023/01/09 04:27

配列の値によって出力するHTMLを変更したい

$renrakusaki["name"]["compatible"]の値によって、出力内容を変更したい

のですが、if文がうまく動作してくれません。

代入はできているのを

printで確認しました。
内容は意図したものと同じ値になっています。

代入を行っている部分

#!/usr/local/bin/php <?php $contact["name1"]["line"]="https://line.me/ti/"; $contact["name1"]["phone"]="tel:090"; $contact["name1"]["compatible"]=-1; $contact["name2"]["line"]="https://line.me/ti/"; $contact["name2"]["phone"]="tel:080"; $contact["name2"]["compatible"]=-1; $contact["name3"]["line"]="https://line.me/ti"; $contact["name3"]["phone"]="tel:070"; $contact["name3"]["compatible"]=-1; $contact["name4"]["line"]="https://line.me/ti/"; $contact["name4"]["phone"]="tel:010"; $contact["name4"]["compatible"]=-1; set_compatible(); show_compatible(); function set_compatible(){ $fp=fopen("name1.txt","r"); $line=fgets($fp); fclose($fp); print "name1:".$line."="; if($line=="impossible") $contact["name1"]["compatible"]=0; if($line=="Phone") $contact["name1"]["compatible"]=1; if($line=="LINE") $contact["name1"]["compatible"]=2; if($line=="all") $contact["name1"]["compatible"]=3; print $contact["name1"]["compatible"]."<br>"; $fp=fopen("name2.txt","r"); $line=fgets($fp); fclose($fp); print "name2:".$line."="; if($line=="impossible") $contact["name2"]["compatible"]=0; if($line=="Phone") $contact["name2"]["compatible"]=1; if($line=="LINE") $contact["name2"]["compatible"]=2; if($line=="all") $contact["name2"]["compatible"]=3; print $contact["name2"]["compatible"]."<br>"; $fp=fopen("name3.txt","r"); $line=fgets($fp); fclose($fp); print "name3:".$line."="; if($line=="impossible") $contact["name3"]["compatible"]=0; if($line=="Phone") $contact["name3"]["compatible"]=1; if($line=="LINE") $contact["name3"]["compatible"]=2; if($line=="all") $contact["name3"]["compatible"]=3; print $contact["name3"]["compatible"]."<br>"; $fp=fopen("name4.txt","r"); $line=fgets($fp); fclose($fp); print "name4:".$line."="; if($line=="impossible") $contact["name4"]["compatible"]=0; if($line=="Phone") $contact["name4"]["compatible"]=1; if($line=="LINE") $contact["name4"]["compatible"]=2; if($line=="all") $contact["name4"]["compatible"]=3; print $contact["name4"]["compatible"]."<br>"; }

実行して代入値を確認

name1:iLINE=2 name2:all=3 name3:LINE=2 name4:all=3

比較表示する関数

function show_compatible(){ if($contact["name1"]["compatible"]>=1){ print <<<output <label><input type="radio" id="name" value="name1" onchange="showcontact(this.value);">メンバ1 に</label><br> <div id="name1" style="display:none"> output; if($contact["name1"]["compatible"]==1){ print <<<output <a href="{$contact['name1']['phone']}">電話</a> </div> <br> output; } if($contact["name1"]["compatible"]==2){ print <<<output <a href="{$contact['name1']['line']}">LINE</a> </div> <br> output; } if($contact["name1"]["compatible"]==3){ print <<<output <a href="{$contact['name1']['line']}">LINE</a><br> <a href="{$contact['name1']['phone']}">電話</a> </div> <br> output; } } if($contact["name2"]["compatible"]>=1){ print <<<output <label><input type="radio" id="name" value="name2" onchange="showcontact(this.value);">メンバ2</label><br> <div id="name2" style="display:none"> output; if($contact["name2"]["compatible"]==1){ print <<<output <a href="{$contact['name2']['phone']}">電話</a> </div> <br> output; } if($contact["name2"]["compatible"]==2){ print <<<output <a href="{$contact['name2']['line']}">LINE</a> </div> <br> output; } if($contact["name2"]["compatible"]==3){ print <<<output <a href="{$contact['name2']['line']}">LINE</a><br> <a href="{$contact['name2']['phone']}">電話</a> </div> <br> output; } } if($contact["name3"]["compatible"]>=1){ print <<<output <label><input type="radio" id="name" value="name3" onchange="showcontact(this.value);">メンバ3</label><br> <div id="name3" style="display:none"> output; if($contact["name3"]["compatible"]==1){ print <<<output <a href="{$contact['name3']['phone']}">電話</a> </div> <br> output; } if($contact["name3"]["compatible"]==2){ print <<<output <a href="{$contact['name3']['line']}">LINE</a> </div> <br> output; } if($contact["name3"]["compatible"]==3){ print <<<output <a href="{$contact['name3']['line']}">LINE</a><br> <a href="{$contact['name3']['phone']}">電話</a> </div> <br> output; } } if($contact["name4"]["compatible"]>=1){ print <<<output <label><input type="radio" id="name" value="name4" onclick="showcontact('name4');">メンバ4</label><br> <div id="name4" style="display:none"> output; if($contact["name4"]["compatible"]==1){ print <<<output <a href="{$contact['name4']['phone']}">電話</a><br> </div> <br> output; } if($contact["name4"]["compatible"]==2){ print <<<output <a href="{$contact['name4']['line']}">LINE</a> </div> <br> output; } if($contact["name4"]["compatible"]==3){ print <<<output <a href="{$contact['name4']['line']}">LINE</a><br> <a href="{$contact['name4']['phone']}">電話</a> </div> <br> output; } } if($contact["name1"]["compatible"]==0 && $contact["name2"]["compatible"]==0 && $contact["name3"]["compatible"]==0 && $contact["name4"]["compatible"]==0){ print <<<output 誰もいない output; } }

それぞれの人のラジオボタンが表示されず

誰もいないと扱われます。
どうしたら1以上であることを正しく比較できますか?
どうしたら、0でないと判断してくれますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuma.inaura

2023/01/09 09:04

問題が再現する、もう少しスモールなコードを載せられませんか?
phpsyoshinsya

2023/01/09 09:18

name1:iLINE=2 なのに if($contact["name1"]["compatible"]>=1) が偽とされて if($contact["name1"]["compatible"]==0) が真と判断されます。 これをどう解決すればいいでしょうか? $contact["name1"]["compatible"]には $fp=fopen("name1.txt","r"); $line=fgets($fp); if($line=="LINE") $contact["name1"]["compatible"]=2; で代入しています。 よろしくご教授ください。
y_waiwai

2023/01/09 10:51

提示のコードではどういうふうに動作するんでしょうか。 そして、それをどう言う風にしたいんでしょう。
phpsyoshinsya

2023/01/09 11:08

本来なら 1以上であるが真となってほしいのですが、 0であるということが偽になってほしいのですが、 これが逆になって意図したようになりません。
phpsyoshinsya

2023/01/10 23:33

独立した変数で行っていたときはうまく比較できて意図した動作をしてくれてたんですけどね、グローバルな配列にしたらうまくいかなくなったんですよね。 何が悪いのでしょうか? 是非ご教授ください。
phpsyoshinsya

2023/01/10 23:34

代入した値は意図どおりになっているんですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問