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]了非法偏移量。按照PHP 的字符串子串访问Docs的规则,这是第一个字符:'option 1'0

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