0

これが可能かどうかはわかりませんが、ここに行きます...私はにindexes含まれる配列のすべてを取得する必要がありますobject

foreach

<?php foreach($all_orders as $key => $val) : ?>

<?php 
    $cart = unserialize($val->cart);  
    $keys = array_keys($cart); 
    $x = count($keys); 
    $index = $keys[$x]; 
    $cart = $cart[$index]; 
?>

<?php $val->field_name; ?>

<?php endforeach; ?>

var_dump

array (size=3)
  0 => 
    object(stdClass)[22]
      public 'tracking_num' => string '1Z12345E1512345676' (length=18)
      public 'order_status' => string '1' (length=1)
      public 'cust_id' => string '10' (length=2)
      public 'cart' => string 'a:1:{s:32:"d9082c0e32bb353796d3bf8ebba34f71";a:9:{s:5:"rowid";s:32:"d9082c0e32bb353796d3bf8ebba34f71";s:2:"id";s:9:"101_44068";s:3:"qty";s:1:"1";s:5:"price";s:5:"104.5";s:4:"name";s:13:"Business Card";s:5:"image";s:18:"business-cards.gif";s:4:"ship";a:3:{s:6:"Ground";d:9.730000000000000426325641456060111522674560546875;s:11:"2nd Day Air";d:18.53999999999999914734871708787977695465087890625;s:9:"Overnight";d:26.269999999999999573674358543939888477325439453125;}s:7:"options";a:2:{s:17:"Print Description";s:16'... (length=784)
      public 'shipping_type' => string 'Overnight' (length=9)
      public 'shipping_cost' => string '26.27' (length=5)
      public 'order_sub_total' => string '104.50' (length=6)
      public 'order_total' => string '130.77' (length=6)
      public 'id' => string '30' (length=2)
      public 'timestamp' => string '2012-10-13 00:52:30' (length=19)
  1 => 
    object(stdClass)[23]
      public 'tracking_num' => string '' (length=0)
      public 'order_status' => string '0' (length=1)
      public 'cust_id' => string '10' (length=2)
      public 'cart' => string 'a:2:{s:32:"d7f14d223f7873bf93a3c0670b01609b";a:9:{s:5:"rowid";s:32:"d7f14d223f7873bf93a3c0670b01609b";s:2:"id";s:9:"101_96866";s:3:"qty";s:1:"1";s:5:"price";s:5:"84.25";s:4:"name";s:13:"Business Card";s:5:"image";s:18:"business-cards.gif";s:4:"ship";a:3:{s:6:"Ground";d:9.730000000000000426325641456060111522674560546875;s:11:"2nd Day Air";d:18.53999999999999914734871708787977695465087890625;s:9:"Overnight";d:26.269999999999999573674358543939888477325439453125;}s:7:"options";a:2:{s:17:"Print Description";s:16'... (length=1582)
      public 'shipping_type' => string 'Ground' (length=6)
      public 'shipping_cost' => string '37.62' (length=5)
      public 'order_sub_total' => string '622.25' (length=6)
      public 'order_total' => string '659.87' (length=6)
      public 'id' => string '31' (length=2)
      public 'timestamp' => string '2012-10-13 00:53:20' (length=19)
  2 => 
    object(stdClass)[24]
      public 'tracking_num' => string '' (length=0)
      public 'order_status' => string '0' (length=1)
      public 'cust_id' => string '10' (length=2)
      public 'cart' => string 'a:4:{s:32:"7670d6182aaad174954c5619079f48a1";a:9:{s:5:"rowid";s:32:"7670d6182aaad174954c5619079f48a1";s:2:"id";s:9:"101_32840";s:3:"qty";s:1:"1";s:5:"price";s:5:"84.25";s:4:"name";s:13:"Business Card";s:5:"image";s:18:"business-cards.gif";s:4:"ship";a:3:{s:6:"Ground";d:9.730000000000000426325641456060111522674560546875;s:11:"2nd Day Air";d:18.53999999999999914734871708787977695465087890625;s:9:"Overnight";d:26.269999999999999573674358543939888477325439453125;}s:7:"options";a:2:{s:17:"Print Description";s:16'... (length=3145)
      public 'shipping_type' => string 'Overnight' (length=9)
      public 'shipping_cost' => string '224.46' (length=6)
      public 'order_sub_total' => string '1,000.75' (length=8)
      public 'order_total' => string '1225.21' (length=7)
      public 'id' => string '32' (length=2)
      public 'timestamp' => string '2012-10-13 01:11:03' (length=19)

このコードはaforeachの中に含まれていますvarには複数の。を持つ$cartのオブジェクトが含まれています。ループに置き換えると、配列の最初のインデックスが表示されます。ただし、1つを超えるインデックスが含まれているものもあります。ARRAYindexes$x0cartcart

count($keys)cart配列内のインデックスの数を適切にエコーアウトしています。たとえば、カートが3つあります。

  1. cart1は持っています1 index
  2. cart2は持っています2 index
  3. cart3は持っています4 index

私が戻ったらecho count($keys)私は戻ってきます1 2 4

$xこれらの値をループごとにvarに個別に(順番に)渡すにはどうすればよいですか?

カートに複数のインデックス値があることに注意してください

出力を期待する:

それぞれcartに複数の製品を含む配列が含まれています。foreachは、配列内の各製品を反復処理して表示する必要があります。cart上記のvar_dumpに基づいて、配列の期待される出力はcart次のようにテーブルに含まれる必要があります。

<tr>0</tr> /*cart 1 has 1 index in the array*/
<tr>01</tr> /*cart 2 has 2 index in the array*/
<tr>0123</tr> /*cart 3 has 4 index in the array*/
4

3 に答える 3

0

私があなたの質問を理解していれば、そして私にはわかりforeachませんが、表示されていないループ内で単純なループを使用できます。(または、少なくとも私がこの回答を書いている時点では質問には含まれていません。質問を編集して表示してください。)

この内部ループは、次のようforeachに値を循環します。$keys

foreach ($keys as $this_key) {
    // whatever you want to do with the values of $keys here
    // each value will be available as $this_key
}
于 2012-10-13T05:37:19.947 に答える
0

配列インデックスは 0 から始まるため、以下を試してください。

$x = count($keys) -1
$index = $keys[$x]

すべてのインデックスは $keys に保存され、それをループして、次のようなそれぞれの要素を取得できます$cart[$keys[0]], $cart[$keys[1]], ...

これにより、配列の最後の配列キーが得られます$index

または、配列 $cart のすべてのキーをループするために次を使用することをお勧めします。

foreach($cart as $key=>$value){
   $cart[$key]; $value //Do whatever you want with the cart with the index $key or its value $value.
}
于 2012-10-13T05:44:12.747 に答える
0

以下のように試すことができます

各注文には複数のカートを含めることができ、各カートには複数のアイテムを含めることができます。各カートにアイテムの数を表示したいもの。

<?php 
    $cart = unserialize($val->cart);  
    $keys = array_keys($cart); // this will give you # of carts into one order
    //if now you want to count # of items into each cart then
    foreach($keys as $val){
      echo count($cart[$val]);
    }

?>
于 2012-10-13T06:19:12.293 に答える