У меня есть код ниже, который передает данные из MySQL в массив PHP:
while ( $row = $result->fetch_assoc() ) {
$profile[] = array(
"id" => $row[ "id" ],
"first" => $row[ "first" ],
"last" => $row[ "last" ],
"cell" => $row[ "cell" ],
"email" => $row[ "email" ],
"kids" => $row[ "kids" ]
);
}
Затем я кодирую это в JavaScript следующим образом:
var userprofile = <?php echo json_encode($profile); ?>;
Результатом является
Чтобы получить параметр, я должен сделать userprofile[0].cell, где, как я хочу, просто сделать userprofile.cell
Что мне нужно изменить, чтобы получить желаемый результат?
Есть только один результат
если вы не отбрасываете некоторые поля, которые мы не видим, вы можете просто выполнить $profile = $row, поскольку все ключи одинаковые



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


На основании этой строки:
var userprofile = <?php echo json_encode($profile); ?>;
Похоже, вы выполнили запрос, чтобы получить одну строку, содержащую данные профиля для одного пользователя.
Но то, как вы его получаете
while ( $row = $result->fetch_assoc() ) {
$profile[] = array(...
вот как бы вы настроили его, если бы хотели вернуть несколько профилей пользователей.
Я думаю, что вместо этого вам нужно просто:
$profile = $result->fetch_assoc();
Если в профиле есть другие столбцы, которые вы не хотите отправлять, вы можете просто указать нужные столбцы в своем запросе. (SELECT id, first, last, etc. вместо SELECT *.)
Может это поможет:
var single = {"foo": 1, "bar": 2};
//PHP would be array('foo' => 1, 'bar' => 2);
var list = [{"foo": 1, "bar": 2}];
//PHP would be array(array('foo' => 1, 'bar' => 2)); ... what you do with []... array_push.
console.info(list[0].foo);
console.info(single.foo);
Вы создаете «объект» или массив объектов? Если позже, вам нужно будет ссылаться на объект с правильным смещением. Очевидно, если заявлено, надеюсь, код сделает это очевидным.
Ну а если там всего один элемент:
$profile = array(...? вместо того, чтобы выставлять это значение ...$profile[] = array(