【问题标题】:My Array variable will return only the first character我的 Array 变量将只返回第一个字符
【发布时间】:2018-05-11 12:48:27
【问题描述】:

美好的一天!我的问题在这里并不常见......有很多与我的问题相似的问题,但我比较一个是相同的,但他没有像这样声明他/她的变量:$page = array();,但我的我声明了它但它仍然返回值的第一个字符。

来源:PHP String in Array Only Returns First Character

这是我的代码:

主 php 文件

脚本:

var saveStudRegInfo=[[],[]];

studInfoLN = document.getElementById('studRegLN').value;
studInfoFN = document.getElementById('studRegFN').value;
studInfoMN = document.getElementById('studRegMN').value;
studInfoGender = document.getElementById('studRegGender').value;
studInfoCourse = document.getElementById('studRegCourse').value;
studInfoID = document.getElementById('studRegID').value;
studInfoRFID = document.getElementById('studRegRFID').value;

saveStudRegInfo[0][0] = studInfoLN;
saveStudRegInfo[0][1] = studInfoFN;
saveStudRegInfo[0][2] = studInfoMN;
saveStudRegInfo[0][3] = studInfoGender;
saveStudRegInfo[0][4] = studInfoCourse;
saveStudRegInfo[0][5] = Number(studInfoID);
saveStudRegInfo[0][6] = studInfoRFID;
saveStudRegInfo[0][7] = studPicFilename;

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
   if (this.readyState == 4 && this.status == 200) {
     document.getElementById("saveWorkSched").innerHTML = this.responseText;
   }
};

xhttp.open("GET", "ajax/saveSAWorkSched.php?studRegInfo="+saveStudRegInfo+"&schedList="+getSAWorkSched+"&studInfoID="+studInfoID, true);
xhttp.send();

保存SAWorkSched.php

$studPerInfo = array();
$studPerInfo = $_GET['studRegInfo'];
$studLN=$studFN=$studMN=$studGender=$studCourse=$studID=$studRFID=$studPicFilename='';

if (!empty($studPerInfo)) {
    $studLN = $studPerInfo[0];
    $studFN = $studPerInfo[1];
    $studMN = $studPerInfo[2];
    $studGender = $studPerInfo[3];
    $studCourse = $studPerInfo[4];
    $studID = (int)$studPerInfo[5];
    $studRFID = $studPerInfo[6];
    $studPicFilename = $studPerInfo[7];
}

echo var_dump($studLN);

结果将是:

string(1) "d"

这是整个数组的var_dump ($studPerInfo)。

string(74) "Dela Cruz,Juan,Masipag,male,BSInfoTech,1234567890,2342342342342,dummy.jpg,"

【问题讨论】:

  • 根据你的var_dump它的字符串,你需要explode它。
  • 您用$studPerInfo = array(); 声明数组,但用$studPerInfo = $_GET['studRegInfo']; 的字符串覆盖它
  • 将 saveSAWorkSched.php 中的$studLN = $studPerInfo[0]; 更改为$studLN = $studPerInfo[0][0];,将$studFN = $studPerInfo[1]; 更改为$studFN = $studPerInfo[0][1]; 等等...
  • 据我所知,您应该使用 POSTJSON.stringify( ) 因为您尝试提交数组,请参阅此答案:stackoverflow.com/a/12097160/2008111
  • @marekful 我这样做了,但它返回一个错误......关于偏移量的一些东西

标签: php arrays multidimensional-array


【解决方案1】:

我的建议是先处理这个客户端。在不知道数组的确切结构或将其分解为单独的查询参数的情况下,将整个数组编码为 json 然后在服务器端对其进行解码是相当容易的。试试这样的:

xhttp.open("GET", "ajax/saveSAWorkSched.php?studRegInfo="+encodeURIComponent(JSON.stringify(saveStudRegInfo)));

然后在php中你可以从json解码:

$studPerInfo = json_decode($_GET['studRegInfo'],1);

【讨论】:

  • 您的代码有效.. 感谢您分享您的答案.. 我想我会使用此代码,因为在解码时它是一个多维数组,因为我在主 php 上使用多维数组。
【解决方案2】:

您得到的值是 string ,要将其用作 aaray,您需要将其分解

使用explode

$studPerInfo = explode(',', $_GET['studRegInfo']);

【讨论】:

  • 这个答案对我有用......我将使用这个,因为这是我使用的第一个代码......我会在这里尝试其他答案......顺便说一下我可以接受多个答案?
  • 不,你不能。您只能接受一个答案,但如果您也觉得有用,请放弃投票给其他人。
  • 谢谢 :-) 但很抱歉您的代码对我有用,但我会使用另一个代码,因为这些代码适合我的问题..
【解决方案3】:

这是字符串值,要作为数组使用,需要将其分解。

 $studPerInfo = explode(',', $_GET['studRegInfo']);

print_r($studPerInfo);

在数组中获取结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多