不确定这是否可行但是这里...我需要获得indexes
object
的所有内容
<?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; ?>
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)
此代码包含在foreach
内.var $cart
包含ARRAY
的对象,其中包含多个indexes
。如果我将$x
替换为0
,则循环将显示cart
数组中的第一个索引。但是,有些cart
包含的内容超过&gt; 1指数。
count($keys)
正确地回显了cart
数组中的索引数。例如,我有3个推车。
cart
1有1 index
cart
2有2 index
cart
3有4 index
如果我echo count($keys)
我会回来1 2 4
如何为每个循环单独将这些值(按顺序)传递给$x
var?
请注意购物车如何拥有超过1个索引值
期望输出:
每个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*/
答案 0 :(得分: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
}
答案 1 :(得分: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.
}
答案 2 :(得分: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]);
}
?>