Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Json_Insert_Splice - Fatal编程技术网

PHP-将另一个数组中带有键的值插入到特定位置的数组中

PHP-将另一个数组中带有键的值插入到特定位置的数组中,php,arrays,json,insert,splice,Php,Arrays,Json,Insert,Splice,我试图从SQL查询接收的数据中创建一个JSON对象作为数组。目前我得到的编码JSON是: [{"firstname":"Student","lastname":"1"},{"firstname":"Student","lastname":"2"},{"firstname":"Student","lastname":"3"}] 我想从另一个数组中插入的值,这些值与上面JSON中的每个数组的顺序相对应:(JSON) 因此,JSON应该如下所示: {"firstname":"Student","la

我试图从SQL查询接收的数据中创建一个JSON对象作为数组。目前我得到的编码JSON是:

[{"firstname":"Student","lastname":"1"},{"firstname":"Student","lastname":"2"},{"firstname":"Student","lastname":"3"}]
我想从另一个数组中插入的值,这些值与上面JSON中的每个数组的顺序相对应:(JSON)

因此,JSON应该如下所示:

{"firstname":"Student","lastname":"1","grade":"85.00000"}
我当前的代码:

//Provisional Array Setup for Grades
$grade = array();
$userid = array();
$sqldata = array();

foreach($json_d->assignments[0]->grades as $gradeInfo) { 
    $grade[] = $gradeInfo->grade;
    $userid[] = $gradeInfo->userid;
}

//Server Details
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "moodle";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

foreach($userid as $id) {
        $sql = "SELECT firstname, lastname FROM mdl_user WHERE id='$id'";
        $result = mysqli_query($conn, $sql);

        if (mysqli_num_rows($result) > 0) {
        // output data of each row

            while($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
                $sqldata[] = $row;
            }

        } else {
            echo "ERROR!";
        }

}

$sqlr = json_encode($sqldata);
$grd = json_encode($grade);

echo $sqlr;
echo $grd;



mysqli_close($conn);
请尝试以下代码:

foreach($userid as $x => $id) {
    $sql = "SELECT firstname, lastname FROM mdl_user WHERE id='$id'";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
    // output data of each row

        while($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
            $row['grade'] = $grade[$x];
            $sqldata[] = $row;
        }

    } else {
        echo "ERROR!";
    }
}
我添加了变量
$x
并在
$grade
数组中添加了具有相同索引的
$row['grade']

function set_column_values($arr, $column_name, $column_values) {
    $ret_arr = array_map(function($arr_value, $col_value) use ($column_name) {
        $arr_value[$column_name] = $col_value;
        return $arr_value;
    }, $arr, $column_values);

    return $ret_arr;
}

$sqldata = set_column_values($sqldata, 'grades', $grade);
$sqlr = json_encode($sqldata);
var_dump($sqlr);
希望有帮助

function set_column_values($arr, $column_name, $column_values) {
    $ret_arr = array_map(function($arr_value, $col_value) use ($column_name) {
        $arr_value[$column_name] = $col_value;
        return $arr_value;
    }, $arr, $column_values);

    return $ret_arr;
}

$sqldata = set_column_values($sqldata, 'grades', $grade);
$sqlr = json_encode($sqldata);
var_dump($sqlr);