#javascript #php #mysql #arrays
#javascript #php #mysql #массивы
Вопрос:
В настоящее время у меня есть подобный код дважды, по одному для каждой таблицы
$sql = "SELECT * FROM Characters";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
$dataset = array();
while($row = mysqli_fetch_assoc($result)) {
$dataset[]=$row;
}
} else {
echo "0 results";
}
Это работает, и я получаю 2 отдельных массива из 2 отдельных таблиц. Я хочу знать, как поместить оба этих PHP-массива в объект, подобный тому, который вы видите в JSON. Массив узлов из одной таблицы и массив ссылок из другой таблицы.
{
"nodes": [
{"name": "Bob", "group": 1},
{"name": "Bill", "group": 2}
],
"links": [
{"source": "Bill", "target": "Bob", "value": 1}
]
}
Я видел решения, которые объединяют оба массива, но мне нужно, чтобы они оставались разделенными, и мне нужно, чтобы оба массива находились в одном объекте. Если нет способа сделать это в PHP, есть ли способ, которым я могу отправить оба массива PHP в Javascript, а затем объединить их в объект там? Спасибо
Комментарии:
1. Вам просто нужно поместить оба массива в один ассоциативный массив, который в конце преобразуется в json.
2. Примечание: Объектно-ориентированный интерфейс к
mysqli
значительно менее подробный, что облегчает чтение и аудит кода, и его нелегко спутать с устаревшимmysql_query
интерфейсом, где отсутствие одногоi
может вызвать проблемы. Пример:$db = new mysqli(…)
и$db->prepare("…")
процедурный интерфейс является артефактом эпохи PHP 4 и не должен использоваться в новом коде. Кроме того, процедурный интерфейс имеет менее строгую проверку ошибок и отчеты, что затрудняет усилия по отладке.
Ответ №1:
Поместите результаты каждого запроса в отдельные массивы, например $nodes
и $links
. Затем вы можете объединить их с:
$results = ["nodes" => $nodes, "links" => $links];
echo json_encode($results);
Ответ №2:
Так же просто, как
$result = [
'nodes' => $array1,
'links' => $array2,
];
$jsonResult = json_encode($result);