Как перевести массив из PHP в JS?

182
16 декабря 2017, 07:43

Здравствуйте. Помогите пожалуйста разобраться, у меня есть массив в php:

<?php
$credit=array(
    array('Номер 1','10','03'),
    array('Номер N','N','N'),
    array('Номер 10','6','12')
    );                                                                      
?>
var credit_m_m = <?php echo json_encode($credit_m_m);?>;                      

Массив из php мне нужно перевести в js, как указано в примере ниже:

var options = {                                                 
     manualInput: false,
     order:[{
            model: 1,
            quanity: 10,
            date: 03
},
{
            model: N,
            quanity: N,
            date: N
},
{
            model: 10,
            quanity: 6,
            date: 12
          }]                                                                           
}

Как правильно перевести массив из php, в js массив "order"?

Answer 1

Проблема что в вашем массиве PHP нет ключей, но если предположить что значения идут в таком же порядке как и в JS массиве, конвертировать его можно вот так:

// Ваш исходный массив.
$credit=[
    ['Номер 1','10','03'],
    ['Номер N','N','N'],
    ['Номер 10','6','12']
];
// Готовим массив с нужным форматом.
$response = [
    'manualInput' => false,
    'order' => []
];
// Конвертируем массив в тот что хотим увидеть в JS.
foreach ($credit as $item) {
    $response['order'][] = [
        'model' => filter_var($item[0], FILTER_SANITIZE_NUMBER_INT),
        'quanity' => $item[1],
        'date' => $item[2]
    ];
}
?>
var credit_m_m = <?php echo json_encode($response); ?>;     
Answer 2

как то так видимо? Если у вас N это тестовые данные, а значения на самом деле целочисленные, то добавить а-ля (int)$q

$data = array_map(function($v){
            list($m, $q, $d) = $v;
            return [
                'model' => str_replace("Номер ", "", $m),
                'quantity' => $q,    // (int)$q
                'date' => $d,        // (int)$d
            ];
         }, $credit);
echo json_encode($data, JSON_UNESCAPED_UNICODE);

альтернативный вариант записи тела функции обратного вызова

list($model, $quantity, $date) = $v;
$model =  str_replace("Номер ", "", $model);
return compact(['model', 'quantity', 'date']);
READ ALSO
Добавление данных без перезагрузки в MySQL с PHP + Ajax

Добавление данных без перезагрузки в MySQL с PHP + Ajax

Добрый день! Если так все скомпоновать, то выдает ошибкуА если без script, то все ок, НО перегружает страничку

245
Вырезать подстроку

Вырезать подстроку

Здравствуйте! Есть строки вида:

292
Переменная в имени переменной php

Переменная в имени переменной php

Нужно сделать запрос в базу данныхНапример:

173