PHP unserialize函数从0到9获取任何数字

时间:2012-12-06 21:59:08

标签: php function serialization numbers

我需要使用unserialize php funcion获取产品ID。我有这个文字

a:1:{i:4;a:17:{s:8:"quantity";i:1;s:10:"product_id";i:5196;s:11:"category_id";s:3:"209";s:5:"price";d:1;s:3:"tax";s:5:"18.00";s:6:"tax_id";s:1:"1";s:11:"description";s:0:"";s:12:"product_name";s:4:"test";s:11:"thumb_image";s:0:"";s:3:"ean";s:0:"";s:10:"attributes";s:6:"a:0:{}";s:16:"attributes_value";a:0:{}s:6:"weight";s:6:"0.0000";s:9:"vendor_id";s:1:"0";s:5:"files";s:6:"a:0:{}";s:14:"freeattributes";s:6:"a:0:{}";s:25:"dependent_attr_serrialize";s:6:"a:0:{}";}}

我用这个PHP代码得到了product_id:

$rslt = unserialize($data);
echo $rslt[4]["product_id"]);

所以我的问题是有办法做echo $rslt[x]["product_id"];之类的事情,其中​​x是介于0-9之间的任何数字

也尝试了这个但不起作用

        $i=0;
        while($rslt[$i]["product_id"]!="")
            {
            echo $i;
            //echo $rslt[4]["product_id"];                    
            echo $rslt[$i]["product_id"];
            $i++;
            }

1 个答案:

答案 0 :(得分:1)

一旦你反序列化你的输入,你有一个很好的旧PHP数组,相当于:

$rslt = array (
  4 => 
  array (
    'quantity' => 1,
    'product_id' => 5196,
    'category_id' => '209',
    'price' => 1,
    'tax' => '18.00',
    'tax_id' => '1',
    'description' => '',
    'product_name' => 'test',
    'thumb_image' => '',
    'ean' => '',
    'attributes' => 'a:0:{}',
    'attributes_value' => 
    array (
    ),
    'weight' => '0.0000',
    'vendor_id' => '0',
    'files' => 'a:0:{}',
    'freeattributes' => 'a:0:{}',
    'dependent_attr_serrialize' => 'a:0:{}',
  ),
);

要获取第一个元素,只需像任何其他数组一样调用current()

$first_item = current($rslt);
print_r($first_item['product_id']);