我一直收到
警告:非法字符串偏移'类型'在…在线…
我已经尝试遵循这里的答案非法字符串偏移警告PHP
通过像 这样做if(isset($_POST['type_'.$i]))
$$T['type'] = $_POST['type_'.$i];
但它仍然给出错误,我认为它可能与变量变量有关(这是我第一次使用它们)。下面是我的代码:
for($i = 1; $i <= 15; $i++){
$T = 'T'.$i;
$$T['type'] = $_POST['type_'.$i];
$$T['hidden'] = $_POST['hidden_'.$i];
$$T['require'] = $_POST['require_'.$i];
if(isset($_POST['question_'.$i.'_list']))
$$T['list'] = $_POST['quesiton_'.$i.'_list'];
}
我不喜欢创建数组T1, T2…T15,具有以下值['type'], ['hidden'], ['require'], ['list']
.
怎么样?
for($i = 1; $i <= 15; $i++){
$T = 'T'.$i;
$$T = array(
'type' => $_POST['type_'.$i],
'hidden' => $_POST['hidden_'.$i],
'require' => $_POST['require_'.$i]);
if(isset($_POST['question_'.$i.'_list']))
${$T}['list'] = $_POST['question_'.$i.'_list'];
}
这是一个优先级问题。首先解析$T['type']
,然后作为$___
的变量名。
由于$T
是一个字符串,['type']
是一个无效的偏移量。
你可以这样做:
${$T}['type']
…我认为。我不太清楚,因为数组就是为这样的东西而存在的;)
$T = array();
for( $i = 1; $i <= 15; $i++) {
$row = array(
"type" => $_POST['type_'.$i],
"hidden" => $_POST['hidden_'.$i],
"require" => $_POST['require_'.$i]
);
if( isset($_POST['question_'.$i.'_list'])) {
$row['question_'.$i.'_list'] = $_POST['question_'.$i.'_list'];
}
$T[] = $row;
}