2016-10-11 4 views
1

Я хотел бы заполнить массив data содержимым файла CSV с использованием PHP.Заполнение массива jQuery с содержимым CSV с использованием PHP

Мой текущий код:

<script src="http://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" crossorigin="anonymous"></script> 

<?php 
$file = fopen('food.csv', 'r'); 
while (($line = fgetcsv($file)) !== FALSE) { 
    print_r($line); 
} 
fclose($file); 
?> 

<script type="text/javascript"> 
var data = <?php echo json_encode($line); ?>; 
document.write(data); 
</script> 

Однако, когда я запускаю это, я получаю следующий вывод:

Array 
(
    [0] => McDonalds 
    [1] => Fast Food 
    [2] => London 
) 
Array 
(
    [0] => Marios 
    [1] => Italian 
    [2] => Manchester 
) 

<script type="text/javascript"> 
var data = false; 
document.write(data); 
</script> 

Я предполагаю, что переменная $line мой вопрос здесь.


Мой food.csv файл:

McDonalds,Fast Food,London 
Marios,Italian,Manchester 

План состоит в том, чтобы включить data массив в нечто вроде ниже демо:

JSFiddle Demo

+1

Посмотрите на [http://php.net/manual/en/function.json-encode.php](http://php.net/manual/en/function.json-encode. PHP). Это php-функция, которая упорядочивает данные в формате «JavaScript Object Notation». –

ответ

1

каждый раз, когда вы печатаете линию вы переопределяете предыдущий. Кроме того, вы используете jsonencode с, я думаю, не массив вот почему это дает вам ложное, попробуйте следующее:

$file = fopen('food.csv', 'r'); 
$allfile = []; 
while (($line = fgetcsv($file)) !== FALSE) { 
    print_r($line); 
    $allfile[] = $line; 
} 
fclose($file); 
?> 

<script type="text/javascript"> 
var data = <?php echo json_encode($allfile); ?>; 
document.write(data); 
</script> 
+1

Ничего себе !! Вы быстро: -D 'var data = [[« McDonalds »,« Fast Food »,« London »], [« Marios »,« Italian »,« Manchester »]]; document.write (data); 'мой новый выход - он отлично работал :-) – michaelmcgurk

+0

Придется подождать 6 минут, прежде чем принимать ваш ответ. Спасибо :-) – michaelmcgurk

+1

Добро пожаловать, рад помочь: P – Aschab

1

Вместо использования print_r() сохранить каждую строку в массив и json_encode этого. Например;

<?php 
$arr = []; 
$file = fopen('food.csv', 'r'); 
while (($line = fgetcsv($file)) !== FALSE) { 
    $arr[] = $line; 
} 
fclose($file); 
?> 

<script type="text/javascript"> 
var data = <?php echo json_encode($arr); ?>; 
document.write(data); 
</script> 
Смежные вопросы