Цикл ассоциативных массивов PHP и AngularJS

#javascript #php #angularjs #arrays

#javascript #php #angularjs #массивы

Вопрос:

Итак, у меня есть простой HTML-файл, и это результат:

введите описание изображения здесь

Код HTML-файла:

 <tr ng-repeat="(key, value) in items">
  <td ng-bind="key"></td>
  <td ng-bind="value"></td>
</tr>
  

Угловой файл

 $scope.viewCart = function() {
  $('#cartModal').openModal();
  $http.get('../crud/cartCRUD/cart-data.php')
  .success(function(data) {
  $scope.items = data;
  })
}
  

cart-data.php

 print json_encode($_SESSION['cart_items']);
  

My $_SESSION['cart-items'] — это ассоциативный массив, содержащий key( product id ) => value ( quantity )

Если вы получите доступ к файлу php напрямую, используя print_r($_SESSION['cart-items']) , вы получите это:

 Array
(
    [35] => 23
    [10] => 7
)
  

Это означает, что вывод из моего html-файла правильный.

Теперь то, что я хотел сделать, это вместо того, чтобы показывать ключ и значение в my ng-repeat , я хочу получить название продукта из базы данных mysql, используя session array key( product id ) .

На данный момент это то, что я сделал

 $statement = $conn->query("SELECT * FROM product WHERE id IN (".implode(',',array_keys($_SESSION['cart_items'])).")");

while($row = $statement->fetch()) {
    $data[] = $row;
}

print json_encode($data);
  

и в html-файле:

   <table>
     <thead>
        <tr>
           <th>Name</th>
           <th>Price</th>
           <th>Quantity</th>           
        </tr>
     </thead>
     <tbody>
        <tr ng-repeat="item in items">
           <td ng-bind="item.name"></td>
           <td ng-bind="item.price"></td>
           <td>HOW TO OUTPUT THE QUANTITY</td>
        </tr>
     </tbody>
  </table>
  

Это работает, хотя проблема в том, что я больше не могу получить значение пары ключей (количество). Есть ли правильный способ сделать это?

Ответ №1:

Внутри оператора de while вы можете использовать

 $row["quantity"] = $_SESSION["cart-items"][$row["id"]];
  

Комментарии:

1. вы получаете доступ к количеству, используя item.quantity ?

2. Да, и я не получаю никаких данных. В журнале консоли указано, что элементы корзины с неопределенным индексом