【问题标题】:PHP How to print a single value from this Array?PHP如何从这个数组中打印一个值?
【发布时间】:2016-09-13 15:51:41
【问题描述】:

我有一个这样的数组:

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

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

 $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']:

但没有一个有效

有人可以帮助我吗?

【问题讨论】:

  • 你需要一个unserialize 在某个地方。
  • 您的数组包含序列化值。

标签: php arrays serialization


【解决方案1】:

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

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

你可以把它放在一个循环中,以获取多维数组中的所有值:

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

然后访问它:

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

【讨论】:

    【解决方案2】:

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

    $data = unserialize($item[0]);
    print_r($data);
    
    echo $data['name'] // Bilton Apt
    

    这应该可以做到这一点。

    【讨论】:

    • 谢谢,这是我需要的。
    【解决方案3】:

    你的意思是:

    <?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']);
    

    【讨论】:

    • 根据get_post_data()的wordpress手册$single设置为false,因为大概还有更多的值。
    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多