Превратите несколько массивов в JSON - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь сделать объект JSON из нескольких массивов в PHP.

$a = array("Wis","Dex","Cha" );
$b = array(1,2,2);
$c = array("Perception","Stealth","Intimidation");
$d = array(8,5,1);

и пытаюсь извлечь из него кучу JSON, например:

{ $c[0]:$d[0], "Stat":$a[0], "Multiplier:$b[0] };

и получить все эти JSON и превратить их в строку.Но я пытался понять, как работает json_encode, но не могу понять это.Я надеюсь, что кто-то сможет объяснить мне, как манипулировать этими значениями, чтобы превратить их в JSON.

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Как вы хотите, чтобы данные выходили?Как массив JSON строк объекта JSON или каждая строка отдельно?

<?php

$a = array("Wis","Dex","Cha" );
$b = array(1,2,2);
$c = array("Perception","Stealth","Intimidation");
$d = array(8,5,1);

$data[$c[0]]=$d[0];
$data["Stat"]=$a[0];
$data["Multiplier"]=$b[0];

print(json_encode($data));

?>

Даст вам что-то вроде

{"Perception":8,"Stat":"Wis","Multiplier":1}

Если вы хотите получить массив из них, то несколько изменений:

<?php

$a = array("Wis","Dex","Cha" );
$b = array(1,2,2);
$c = array("Perception","Stealth","Intimidation");
$d = array(8,5,1);

for($i=0;$i<count($a);$i++){
   $data[$i][$c[$i]]=$d[$i];
   $data[$i]["Stat"]=$a[$i];
   $data[$i]["Multiplier"]=$b[$i];
}

print(json_encode($data));

?>

Что даст вам что-то вроде

[{"Perception":8,"Stat":"Wis","Multiplier":1},
{"Stealth":5,"Stat":"Dex","Multiplier":2},
{"Intimidation":1,"Stat":"Cha","Multiplier":2}]
0 голосов
/ 27 мая 2018

Вы можете вручную создать нужный массив с помощью цикла for, а затем использовать json_encode для него.Вы должны быть уверены, что все четыре массива имеют одинаковый размер.

$n = count($a);
$combined = array();
for ($i = 0; $i < $n; $i++) {
    $entry = array();
    $entry[$c[$i]] = $d[$i];
    $entry["Stat"] = $a[$i];
    $entry["Multiplier"] = $b[$i];

    $combined[$i] = $entry;
}
$json = json_encode(combined);
...