-1

我需要使用反序列化 php 函数获取产品 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++;
            }
4

1 回答 1

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']);
于 2012-12-07T13:57:35.970 回答