我需要使用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++;
}
答案 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']);