2013-06-27 136 views
1

我正在与SunShop一起尝试为我的客户端构建自定义报告脚本。 我很难理解如何运行foreach()语句来从此数组中提取任何所选信息。例如,我想抽出每个选项名称&的值。php多维数组循环

目标:

echo $data['options']['name'] 
echo $data['options']['value'] 

我试图通过实施的foreach()循环,并显示我的结果的几种方法,但它没有忘记要么告诉我时,我不反序列化正确,或有一个未定义的对象。你们中的任何人都可以阐明这一点吗?我当然不太了解阵列。

另外,我认为值得一提的是,我没有处理会话。我在SunShop的外部构建这个应用程序只是为了有时运行,以便在需要时提供报告。

我如何得到我的数组:

<?php 
$array=unserialize(base64_decode($data)); 
var_dump($array); 
?> 

阵列转储:

object(__PHP_Incomplete_Class)[1] 
    public '__PHP_Incomplete_Class_Name' => string 'item' (length=4) 
    public 'id' => int 655 
    public 'quantity' => float 3 
    public 'options' => 
    array 
     0 => 
     object(__PHP_Incomplete_Class)[2] 
      public '__PHP_Incomplete_Class_Name' => string 'option' (length=6) 
      public 'id' => string '487' (length=3) 
      public 'product' => string '655' (length=3) 
      public 'name' => string 'Choose Brand' (length=12) 
      public 'value' => string 'Brand Name' (length=10) 
      public 'valueid' => string '2026' (length=4) 
      public 'weight' => string '0' (length=1) 
      public 'price' => string '0' (length=1) 
      public 'desc' => string '' (length=0) 
      public 'sku' => string '' (length=0) 
     1 => 
     object(__PHP_Incomplete_Class)[3] 
      public '__PHP_Incomplete_Class_Name' => string 'option' (length=6) 
      public 'id' => string '488' (length=3) 
      public 'product' => string '655' (length=3) 
      public 'name' => string 'Choose Size & Color' (length=19) 
      public 'value' => string 'Chocolate - Medium' (length=18) 
      public 'valueid' => string '2022' (length=4) 
      public 'weight' => string '0' (length=1) 
      public 'price' => string '0' (length=1) 
      public 'desc' => string '' (length=0) 
      public 'sku' => string '' (length=0) 
    public 'regid' => string '' (length=0) 

回答

2

你只需要学习的对象和数组的区别。 $array根据你的var_dump是一个对象而不是数组。 $options是一个对象数组。

$data = array(); 
foreach($array->options as $option) { 
    $data[] = array(
     'name' => $option->name, 
     'value' => $option->value, 
    ); 
    //of if needed instead of storing these values in $data array you 
    //can just echo these values. 
    //echo $option->name; 
    //echo $option->value; 
} 
+0

谢谢指出。我不知道。您是否推荐您的代码按原样工作,或者将对象转换为数组后?我尝试了它,并没有奏效。 – trainwreck

+0

我不能说我的代码会按原样工作,因为我不知道你的最终结果应该是什么样子。我只是告诉你如何从对象/数组中获取名称和值。 – Pitchinnate