循环变量变量,非法字符串偏移量


Looping variable variables, illegal string offset

我一直收到

警告:非法字符串偏移'类型'在…在线…

我已经尝试遵循这里的答案非法字符串偏移警告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;
}