Примечание: преобразование массива в строку - PullRequest
3 голосов
/ 30 августа 2011

Я получаю сообщение об ошибке при публикации через ajax в файл CSV через php.

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

Мой массив я пытаюсь опубликовать

["0", "0", "0", "0", "0", "0", "0", "0", 99]

Ответ:

Примечание : преобразование массива в строку в C: \ xampp \ htdocs \ snx \ assets \ www \ write.php в строке 4

Мой пост 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 });

1 Ответ

8 голосов
/ 30 августа 2011
$list = array ($_POST["array"]);

Если $_POST['array'] уже является массивом, Array($_POST['array']) создает массив из [одного] массива строк.

Если вы напишите print_r($list), вы увидите что-то вроде этого:

Array(0 =>
 Array(
   0 => "0",
   1 => "0",
   2 => "0",
   3 => "0",
   4 => "0",
   5 => "0",
   6 => "0",
   7 => "0",
   8 => 99
 )
)

Чтобы использовать исходный массив строк, вам, вероятно, просто нужно:

$list = $_POST["array"];

Теперь, когда вы напишите print_r($list), вы увидите ожидаемое:

Array(
   0 => "0",
   1 => "0",
   2 => "0",
   3 => "0",
   4 => "0",
   5 => "0",
   6 => "0",
   7 => "0",
   8 => 99
)

Кстати, используйте only .push для добавления элементов в массивы Javascript, которые вы должны создавать как = [], а не = new Array().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...