PHP如何从此数组中打印单个值?

时间:2016-09-13 15:51:42

标签: php arrays serialization

我有一个像这样的数组:

  

数组([0] => a:39:{s:2:“id”; s:6:“703981”; s:4:“name”; s:10:“Bilton Apt”; s :7:“地址”; s:25:“Hart Blvd,Paradise Acres”; s:3:“zip”; s:2:“PO”; s:10:“city_hotel”; s:11:“Montego。 ...等等...

我想在页面中打印“name”值,所以我写了这两行代码:

 $item = get_post_meta($post->ID, '_ihfc_hotel'); 
 echo $item['name'];

但是当我加载页面时,我收到此错误:

注意:未定义索引:/ Applications / MAMP / htdocs / wp_test_csv / wp-content / themes / twenty ....等名称

我试过其他解决方案,如:

echo $item[0]['name']; or echo $item[0]->['name']:

但没有效果

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

正如Jon Stirling和u_mulder所说,你的数组包含一个序列化值,你的例子中唯一显示的是索引0。 因此,由于您的示例字符串被....etc...缩短了,我只能回答已知的内容。

$data = unserialize($item[0]);
print_r($data);

echo $data['name'] // Bilton Apt

这应该可以做到这一点。

答案 1 :(得分:1)

您需要反序列化数组,如评论中所述:

$ar = unserialize($item[0]);
echo $ar['name'];

您可以将其置于循环中以获取多维数组中的所有值:

foreach($item as $key=>$value){
    $ar[$key] = unserialize($value);
}

然后访问它:

echo $ar[0]['name'];

答案 2 :(得分:0)

你的意思是:

<?php 

 $name = get_post_meta($post->ID, '_ihfc_hotel', true); 
 echo $name;

,否则

<?php 

 $data = get_post_meta($post->ID, '_ihfc_hotel', true); 
 $data = unserialize($data);

 var_dump($data);
 var_dump($data['name']);