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

Looping variable variables, illegal string offset

提问人:Arian Faurtosh 提问时间:6/11/2014 最后编辑:CommunityArian Faurtosh 更新时间:6/11/2014 访问量:470

问:

我不断得到

警告:非法字符串偏移量“type”...在线。。。

我试过按照这里的答案进行操作:非法字符串偏移警告 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']

PHP 数组 变量

评论

1赞 Styphon 6/11/2014
在尝试为其分配任何值之前,请尝试添加。$$T = array();
0赞 didierc 6/11/2014
所以你希望你的每个变量都是数组?如果在设置其中的值之前将它们设置为 怎么办?T$$T = array();
0赞 Arian Faurtosh 6/11/2014
@Styphon添加不起作用$$T = array();
1赞 Jonathan Kuhn 6/11/2014
要么变量不是数组,而您正在尝试按原样访问它,要么您需要用大括号换行,因为赋值是在数组查找之前进行的。尝试。作业中的大括号类似于表达式中的括号。 可能是对数组进行字符串转换,使变量被调用,然后在字符串上查找键。$T$T['type']$$T${$T['type']}$$T$T$Array['type']

答:

2赞 Niet the Dark Absol 6/11/2014 #1

问题是优先权问题之一。 首先解析,然后用作 的变量名称。$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;
}
3赞 didierc 6/11/2014 #2

怎么样?

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