注意:数组到字符串转换

Xav*_*ier 3 php ajax jquery post

我通过php将ajax发布到csv文件时收到错误.

<?php
$list = array ($_POST["array"]);
$fp = fopen('array.csv', 'w');
fputcsv($fp, $list);
fclose($fp);
?>
Run Code Online (Sandbox Code Playgroud)

我试图发布我的阵列

["0", "0", "0", "0", "0", "0", "0", "0", 99]
Run Code Online (Sandbox Code Playgroud)

响应:


注意:第4行的C:\ xampp\htdocs\snx\assets\www\write.php中的数组到字符串转换

我的Ajax帖子;

/* Array */
var defaultArray = new Array();
var localArray = new Array();
var serverArray = new Array();

/* Default Values */
defaultArray[0] = "0";
defaultArray[1] = "0";
defaultArray[2] = "0";
defaultArray[3] = "0";
defaultArray[4] = "0";
defaultArray[5] = "0";
defaultArray[6] = "0";
defaultArray[7] = "0";
defaultArray.push(99);

/* Write Array [1st Load] */
$.post("write.php", { 'array': defaultArray });
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 8

$list = array ($_POST["array"]);
Run Code Online (Sandbox Code Playgroud)

如果$_POST['array']已经是一个数组,则Array($_POST['array'])创建一个[1]字符串数组的数组.

如果你写print_r($list),你会看到这样的事情:

Array(0 =>
 Array(
   0 => "0",
   1 => "0",
   2 => "0",
   3 => "0",
   4 => "0",
   5 => "0",
   6 => "0",
   7 => "0",
   8 => 99
 )
)
Run Code Online (Sandbox Code Playgroud)

要使用原始字符串数组,您可能只需要:

$list = $_POST["array"];
Run Code Online (Sandbox Code Playgroud)

现在,当你写作时print_r($list),你会看到预期的:

Array(
   0 => "0",
   1 => "0",
   2 => "0",
   3 => "0",
   4 => "0",
   5 => "0",
   6 => "0",
   7 => "0",
   8 => 99
)
Run Code Online (Sandbox Code Playgroud)

顺便说一句, .push用于向Javascript数组添加项目,您应该实例化= [],而不是= new Array().

  • 上帝,我喜欢这个网站,赞美Stackoverflow.com的领主 (4认同)
  • 哈利路亚!让我们赞美堕落儿童的女神! (2认同)