Поместите массив в качестве ключа для объекта PHP - PullRequest
0 голосов
/ 04 марта 2019

Я создаю простой сервис для мобильных приложений с php, который дает JSON для мобильных приложений.У меня есть две таблицы в коде, ниже фрагмента:

$con = mysqli_connect(HOST, USER, PASS, DB);
$sql_results = mysqli_query($con, "SELECT * FROM `table-images`");
$sql_results_1 = mysqli_query($con, "SELECT * FROM `table-code` WHERE id='$id'");

$rows = array();
while($r = mysqli_fetch_assoc($sql_results)) {
   $rows[] = $r;
}
echo'{"response":'.json_encode($rows).'}';

Код результата выше:

{
"response": [{
    "id": "31",
    "shirtImage": "Content\/Images\/Short Sleeve\/874be7b82812f76c944d71706c9651eb.gif"
}, {
    "id": "32",
    "shirtImage": "Content\/Images\/Short Sleeve\/b-Cleaned.png"
}]
}

Я хочу поставить результат sql_results_1 в качестве ключа к результату, здесь яJSON мне нужен:

{
"response": [{
    "id": "31",
    "shirtImage": "Content\/Images\/Short Sleeve\/874be7b82812f76c944d71706c9651eb.gif",
    "idcode": [{
        "X": 0,
        "Y": 1,
        "Z": 2
    }]
}, {
    "id": "32",
    "shirtImage": "Content\/Images\/Short Sleeve\/b-Cleaned.png",
    "idcode": [{
        "X": 2,
        "Y": 1,
        "Z": 0
    }]
}]
}

Где ключ idcode является результатом '$ sql_results_1'.Я новичок в программировании на PHP, я прочитал некоторые вопросы относительно моего собственного, но результат не тот, который я ожидаю.

Редактировать

Как ответ @Ashu, вот код:

$final_array = array();
$i=0;

while($r = mysqli_fetch_assoc($sql_results)) {
    array_push($final_array,$r);
    $res = mysqli_query($con, "SELECT * FROM `table-code` WHERE id='".$row['id']."'");
    while($r = mysqli_fetch_assoc($res)) {
       $final_array[$i]["idcode"] = array("x"=>$r['x']);
    }
    $i++; 
}

Но ключ idcode - это JSONObject "idcode":{x=0}, он мне нужен как JSONArray "idcode":[{x=0}]

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

1-й результат сохранения в массиве:

$final_array = array();
while($r = mysqli_fetch_assoc($sql_results)) {
   array_push($final_array,$r);
}

2-й результат таблицы, вы должны создать ключ idcode в final_array, используя $ i.

$i=0;
while($r = mysqli_fetch_assoc($sql_results1)) {
   $final_array[$i]["idcode"] = array("x"=>$r['x'],"y"=>$r['y'],"z"=>$r['z']);
   $i++; 
}

echo'{"response":'.json_encode($final_array).'}';
0 голосов
/ 04 марта 2019

Прежде всего, я бы порекомендовал PDO поверх mysqli.Но с mysqli все так:

Функция выборки:

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

Если два или более столбца результата имеют одинаковые имена полей, последний столбец будет иметь приоритет.Чтобы получить доступ к другим столбцам с тем же именем, необходимо либо получить доступ к результату с помощью числовых индексов, используя mysqli_fetch_row (), либо добавить псевдонимы.

Когда вы помещаете все в массив,иметь многомерный массив $ строк, содержащий все результаты:

 $rows[];

Перейти с:

foreach($rows as $key => $row) {
    $res = mysqli_query($con, "SELECT * FROM `table-code` WHERE id='".$row['id']."'");
   $row["idcode"] = mysql_fetch_assoc($res);
   $rows[$key] = $row;
}

Не проверено.Это дает вам правильную идею?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...