Как убрать внешние кавычки из квадратной скобки в значении массива - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть этот массив, и мне нужно использовать его в диаграммах

в индекс данных У меня есть это значение [1,9] , и это из функции разнесения через запятую без кавычек.

$main_arr = array(
        "label" => 'Total Clicks', 
        "data" => [$total_clicks], 
        "backgroundColor" => "rgba(255, 0, 0, 1)", 
    );

Затем я использую json_encode для преобразования массива в формат json,

[{"label":"Total Clicks","data":["1, 9"],"backgroundColor":"rgba(255, 0, 0, 1)"}]

Как вы можете видеть выше в квадратных скобках есть двойные кавычки, если я передам значение stati c в индексе данных, т. е. [1, 9], оно будет работать нормально. Я пробовал regex, substring, rtrim et c, но никому не помог. Ваша помощь будет высоко ценится!

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

У вас тут сразу несколько проблем. Во-первых, ваши значения являются строками, а во-вторых, у вас есть несколько значений, которые вы хотите разложить, поэтому у вас есть единичные значения:

$total_clicks = '1, 9'; // value guessed based on unexpected output in question

$clickArray = explode(',', $total_clicks);
$clickArray = array_map('trim', $clickArray); // remove white spaces
$clickArray = array_map('intval', $clickArray); // cast everything to int
$main_arr = array(
    "label" => 'Total Clicks',
    "data" => $clickArray,
    "backgroundColor" => "rgba(255, 0, 0, 1)",
);

echo json_encode($main_arr);

это выводит:

{"label":"Total Clicks","data":[1,9],"backgroundColor":"rgba(255, 0, 0, 1)"}

Для более небрежный подход, вы можете даже пропустить строку, где я обрежу пробелы, так как приведение к целочисленному будет делать это неявно, однако мне нравится иметь чистый поток обработанных данных.

1 голос
/ 18 апреля 2020

Преобразование строки в массив ints:

$total_clicks = "1, 9";
print_r(array_map('intval', explode(', ', $total_clicks)));

Преобразование строки в массив strings:

$total_clicks = "1, 9";
print_r(array_map('trim', explode(', ', $total_clicks)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...