我在将值压入全局数组时遇到了一个问题。
用户上传多个文档。每次他上传一个文档,一个web服务被调用,返回"id"answers"type"(工作正常)。我需要将其存储在一个数组中,以便我可以将其编码为JSON并在用户单击Submit按钮时发送它。
我的代码是://global variable
<?php
$idarray = array();
$typearray = array();
?>
//form
<form method="post">
<input type="submit" name="upload" value="Upload">
<input type="submit" name="submit" value="Submit">
</form>
<?php
if(isset($_POST['upload']))
{
include 'webservice_call.php';
$url='http://localhost:8080/MyProject/getEntityRequest';
$response=curl_get_call($url); //this function is inside webservicecall.php
$json_string = json_decode($response);
$id=$json_string->gstdtls->entcd; //this is working fine
$ty=$json_string->gstdtls->stcd; //this is working fine
func1($idarray, $typearray, $id, $ty);
}
if(isset($_POST['submit']))
{
$docls=array();
global $idarray;
global $typearray;
for ($i=0; $i < sizeof($idarray); $i++) {
$docls[] = array (
'id' => $idarray[$i],
'ty' => $typearray[$i],
);
}
$json_formatted['docls']=$docls;
echo json_encode($json_formatted);
}
function func1($idarray, $typearray, $a, $b){
array_push($idarray, $a);
array_push($typearray, $b);
}
?>
当用户最终提交时,它应该以编码格式给我一个数组的内容。这是不可能的。我知道我没有以它应该使用的方式使用全局数组。
你需要的是存储值的地方,如数据库或会话,而不是数组当你调用上传和当你调用提交按钮检索这些值,并将它们转换为json和回显它们。
下面是一个使用session 的例子 <?php
$json_formatted=array();
if (!session_start()) {
session_start();
}
?>
<?php
if(isset($_POST['upload']))
{
$_SESSION["idarray"][]=rand(0,5);
$_SESSION["typearray"][]=rand(0,5);
}
if(isset($_POST['submit']))
{
$docls=array();
$idarray=$_SESSION["idarray"];
$typearray=$_SESSION["typearray"];
for ($i=0; $i < sizeof($idarray); $i++) {
$docls[] = array (
'id' => $idarray[$i],
'ty' => $typearray[$i],
);
}
$json_formatted['docls']=$docls;
echo "<pre>";
print_r(json_encode($json_formatted));
echo "</pre>";
session_destroy();
}
function func1($idarray1, $typearray1, $a, $b){
array_push($idarray, $a);
array_push($typearray, $b);
}
?>
<form method="post">
<input type="submit" name="upload" value="Upload">
<input type="submit" name="submit" value="Submit">
</form>