Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP回送多维数组变量?_Php_Arrays_Multidimensional Array_Foreach - Fatal编程技术网

如何使用PHP回送多维数组变量?

如何使用PHP回送多维数组变量?,php,arrays,multidimensional-array,foreach,Php,Arrays,Multidimensional Array,Foreach,这个问题可能很简单,但不幸的是我不能正确回答 我有一个从数据库获得的数据集,然后根据一个条件创建一个新的“数据集”或多维数组,最后我准备显示最终数组中的内容。我之所以使用第二个数组if,是因为我需要将其用于其他目的 这是我当前的代码 //$controllers is a data set returned from a mysql query $set_controllers = array(); foreach($controllers AS $input){

这个问题可能很简单,但不幸的是我不能正确回答

我有一个从数据库获得的数据集,然后根据一个条件创建一个新的“数据集”或多维数组,最后我准备显示最终数组中的内容。我之所以使用第二个数组if,是因为我需要将其用于其他目的

这是我当前的代码

//$controllers is a data set returned from a mysql query
        $set_controllers = array();
        foreach($controllers AS $input){
            
            $input_value = '';
            
            if(isset($_POST[$input['name']]) ){
                $input_value = trim($_POST[$input['name']]);
            }
        
            $set_controllers[]['name'] = $input['name'];            //name
            $set_controllers[]['answer'] = $input_value;            //answer
            $set_controllers[]['required'] = $input['required'];    //is required field or not
            
        }

    
    foreach($set_controllers AS $field){
    
        echo $field['name'] . '<br />';
        echo $field['required'] . '<br />';
        echo $field['answer'] . '<br /><br />';
    
    }
/$controllers是从mysql查询返回的数据集
$set_controllers=array();
foreach($控制器作为$输入){
$input_值=“”;
如果(isset($_POST[$input['name']])){
$input_value=trim($_POST[$input['name']]);
}
$set_controllers[]['name']=$input['name'];//name
$set\u controllers[]['answer']=$input\u value;//answer
$set_controllers[]['required']=$input['required'];//是否为必填字段
}
foreach($set_控制器为$field){
echo$field['name'].
; echo$field['required'].
; echo$field['answer']。

; }
我遇到的问题是:

注意:未定义索引:必需

未定义索引:名称

未定义索引:答案

为什么会出现这个错误?我如何解决它?

请尝试以下方法:

$tmp = array();
$tmp['name'] = $input['name'];            //name
$tmp['answer'] = $input_value;            //answer
$tmp['required'] = $input['required'];    //is required field or not

$set_controllers[] = $tmp;

使用[]可以创建一个新的索引,我想您不希望每行都有这个索引。

E\u NOTICE
是一种错误报告。您可以使用`
error\u reporting(E\u ALL ^E\u NOTICE)将其关闭@JaredEitnier当它们揭示逻辑问题时,它们很有用,就像在本例中一样。如果禁用它们,OP将不知道他的代码没有按预期工作。要清楚地了解正在发生的事情,您可以使用
var\u dump($set\u controllers)
打印$set\u controllers($set\u controllers)
$arr[]=$val
相当于
数组推送($arr,$val)
。在三个单独的推送操作中推送三个单独的值,创建三个新的数组项。这些条目中的每一个都只有您试图保存的三个键/值对中的一个,因此您会出现错误。完美。是的,这解决了问题。因此,更改此项将为每个索引创建一个数组。非常感谢你的快速回答。我会在10分钟内把这个答案标对。