2

これが私の最初のコードです:

    $camp_price=array(
   'option 1' => array(
                    'id' => 'June 30 to July 20',
                    'weeks' => 3,
                    'week_price' => 995),
   'option 2' => array(
                    'id' => 'June 30 to July 13',
                    'weeks'=> 2,
                    'week_price' => 995)
  ); 

 foreach ($camp_price as $name=>$values) {
$total_cost[$name]=$values['weeks'] * $values['week_price'];
}

ここにHTMLコードがあります。フォームが送信されるまで $total_cost を完全にエコーします。次に、エラーが表示されます。

警告: 無効な文字列オフセット 'オプション 1'

私が理解していないもの:

  <select name="preferred_session">
  <option value="option 1" <?php if($preferred_session =='option 1') echo'selected="selected"'; ?>>
 <?php echo $camp_price['option 1']['id'],': ', $total_cost['option 1']; ?>euros
 </option>
 <option value="2" <?php if($preferred_session =='option 2') echo 'selected="selected"'; ?>>
 <?php echo $camp_price['option 2']['id'],': ', $total_cost['option 2']; ?>euros
 </option>
</select>
4

2 に答える 2

3

エラーをトリガーするコードが実行されると、$camp_priceまたは$total_cost配列ではなく文字列のように見えます。

エラーが発生したポイントの直前にこれらの変数の値を出力し、意図せずに変数を変更した可能性のある場所を探すことができます。

于 2012-12-29T22:11:47.740 に答える
1

警告: 無効な文字列オフセット 'オプション 1'

'option 1'このエラーは、不正な文字列オフセット (ここでは: ) を使用していることを意味します。文字列オフセットは、文字列ではなく、正の数でなければなりません。

これは、文字列変数にアクセスしているが、それが配列であると考えている場合に最もよく発生します: ( Demo )

<?php

$total_cost = 'string value';

echo $total_cost['option 1'];

エラー(および出力)が表示されます:

Warning: Illegal string offset 'option 1' in /demo.php on line 5
s

s末尾のは$total_cost[0]、そのまま不正なオフセット'option 1'が使用されているため0です。PHP の文字列部分文字列アクセスDocsの規則に従って、これは最初の文字です。

string value
s
^---- character 0: substr($total_cost, 0, 1);
                                       ^
于 2012-12-29T22:11:57.043 に答える