• ベストアンサー

PHPのスクリプトで質問です。

いつもお世話になっています。 PHPのスクリプトで質問なのですが、 まずは以下のスクリプトを拝見下さい。 <?php $opname=""; $opt=""; for($i=0;$i<sizeof($options_name);$i++) { $opname.="<div id='opname$i'>".strip_tags($options_name[$i])."</div>"; $opt.="<div id='opt$i'>$0</div>"; ?> <?php if ($options_comment[$i] != '' and $options_comment_position[$i] == '0') { ?> <h3 class="attributesComments"><?php echo $options_comment[$i]; ?></h3> <?php } ?> <div class="wrapperAttribsOptions"> <div class="optionName back"><?php echo $options_name[$i]; ?></div> <div class="back"><?php echo "\n" . $options_menu[$i]; ?></div> <div><?php echo $opt; ?></div> このとき、 オプション名1 選択メニュー1 価格[表示]         選択メニュー2        選択メニュー3 オプション名2 選択メニュー1 \0         選択メニュー2 価格[表示]        選択メニュー3 オプション名3 選択メニュー1 \0         選択メニュー2 \0        選択メニュー3 価格[表示] という風になってしまいます。 \0は、不要のため、表示したくないのですが・・・ どなたかご存知の方ご教授お願いできないでしょうか!!! 宜しくお願いします!!!

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

補足いただいた値と、「$options_menu」に適当な値('選択1', '選択2'という配列)を入れて、出力を試してみました。結果が下記です。 --------test.php-------------------------- <div class="wrapperAttribsOptions"> <div class="optionName back">オプション名1</div> <div class="back"> 選択1</div> <div><div id='opt0'>$0</div></div> <div class="wrapperAttribsOptions"> <div class="optionName back">オプション名2</div> <div class="back"> 選択2</div> <div><div id='opt0'>$0</div><div id='opt1'>$0</div></div> -------------------------------------- 結局、 $opt.="<div id='opt$i'>$0</div>"; これが変数展開されていないんですけど、「$0」はなんでしょうか。 march4さんも質問をされていますが、「$0」が明らかに表示がおかしいです。 ここには実際はどのような値が与えられているのが正しいのでしょうか。

mihomama84
質問者

お礼

ご回答ありがとうございます! $0というのは、価格[表示]のことで、 JavaScript表示で、$0以上のときは、 大きい金額を取るように設定しています。 ですので、選択したオプションの値段が$300 の場合、$0は$300に置き換わります。

その他の回答 (4)

回答No.5

補足いただいた内容が全然分かりませんでした。 とりあえず、上記のPHPを走らせた後に取得されたHTMLのソースを、記載いただけませんか。 $0と表示されるので正しいのであれば、「\0」という値はどこからやってきたのか分かりません。 javascriptで自動的に算出しているようであればPHPの範疇ではないので、結果、「PHPでは不可能」という回答になります。

回答No.3

・変数$options_nameには、どのような値が含まれているのでしょうか。 ・変数$opnameにせっかく値を代入しているのに、下で呼び出していないですが、コレは呼び出す必要があるんじゃないでしょうか。 ・同様に$option_commentにはどのようなコメントが。 ・同様に$options_comment_positionにはどのような値が? 変数名や、HTMLのクラス名などと出力結果が、違いすぎて想像できませんでした。 少なくとも、「\0」という文字が含まれているのはどの変数か、が分かれば、条件分岐で表示しないようにするというアドバイスも出来るんですが・・・

mihomama84
質問者

お礼

ご回答頂きありがとうございます。 文字数の制限を超えてしまうため、一部分しかスクリプトを 入れていないないのですが・・・ $options_name は 「オプション名1」「オプション名2」・・・ の部分です。呼び出しは<div class="optionName back"><?php echo $options_name[$i]; ?></div> の部分です。 $option_comment部分はここでは呼び出す必要がないので、呼び出していません。オプションで特別な説明があるときにのみ、表示されます。 $options_comment_positionは上記の特別な説明があるときに、 左詰め、右詰のどちらで表示するかを定義したものです。 こんな説明でお分かりになりますでしょうか・・・。 お手数をおかけします!

  • march4
  • ベストアンサー率50% (12/24)
回答No.2

「$0」 ↑この子は、何者なんでしょう? これを使い続けている限り、エラーが出るかと思うのですが、どうなんでしょう? あと、前回同様、 4行目の、 'opname$i' ここも直さないと、希望とする結果は得られないと思います。 前回と同じように直してみてください。 全体を完全に把握しているわけではないので、 このようなアドバイスとなっておりますが、 この程度の修正で改善が見られたら儲けものだなと思っております。笑

mihomama84
質問者

お礼

再度ご回答頂いてありがとうございます! そうですよね・・・。こんな短いスクリプトで 分かっていただこうと思う方が無茶ですよね。。。 すみません(TдT) 実はページの下に下記のスクリプトがあり、 JavaScriptで動いています。 <table align="left" style="font-size:10pt; font-weight:bold; text-align:left"> <tr><td width=200 style="color:#4A854A">ベース価格: </td><td><div id="Base0"></div></td></tr> <tr><td width=200 style="color:#4A854A">ベース価格小計: </td><td><div id="Base1"></div></td></tr> <tr style="line-height:1em"><td width=200 style="color:#4A854A"><?php echo $opname; ?></td><td><?php echo $opt; ?></td></tr> <tr><td width=200 style="color:#4A854A">オプション価格小計: </td><td><div id="OptSum"></div></td></tr> </table> ここでは全てのスクリプトが正常に機能していますが、 先ほど記載したスクリプト部分でも、おなじものを 使用できないかと考えたのです・・・。 やはり無理があるのでしょうか。。。 何度もご回答頂いてすみません!

  • march4
  • ベストアンサー率50% (12/24)
回答No.1

回答ではありませんが、ちょこっと書いてみます。 >$opt.="<div id='opt$i'>$0</div>"; この部分の、「$0」というのは、何でしょう? また、「'opt$i'」の部分ですが、 「’」シングルクオテーションで、変数「$i」をくくると、 「$i」は展開されず、そのまま「$i」と表示されてしまいます。 なので、ダブルクオテーション「”」でくくるべきなのかな、と感じましたが、いかがでしょう? よって、 "<div id='opt$i'>$0</div>" は、 "<div id='opt".$i."'>$0</div>" とすべきかなと。(ただ、「$0」は、エラーだと思われます。) 変なことを言っていたら、ごめんなさい^^;

mihomama84
質問者

お礼

ご回答ありがとうございます! さっそく "<div id='opt".$i."'>$0</div>" で試してみたのですが・・・。 ダメでした(TдT) 同じ結果です。 別のところに原因がありそうです。 でも、ご回答頂いてありがとうございました!!

関連するQ&A