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

时间:2014-06-10 22:13:30

标签: php arrays variable-variables

我一直在

  

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

我已尝试按照Illegal string offset Warning 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']

2 个答案:

答案 0 :(得分:3)

那是怎么回事?

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'];
}

答案 1 :(得分:2)

问题是优先考虑的问题之一。首先解析$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;
}