我在生成数组$meta
的WordPress模板中有以下代码:
<?php
global $wpdb;
$query = ("SELECT ID, post_password, post_name
FROM $wpdb->posts
WHERE post_password = 'listing'");
$listings = $wpdb->get_results( $query, OBJECT);
foreach($listings as $listing) {
$meta = get_post_meta($listing->ID,'' ,true);
$meta = array_map(function($n) {return $n[0];}, $meta);
echo "<br /> listing->ID = $listing->ID";
echo "<pre>";
print_r($meta);
echo "</pre>";
$first_name = $meta['first_name'];
$last_name = $meta['last_name'];
?>
<tr>
<td>
<?php echo $meta['first_name']; ?>
</td>
上面的print_r($ meta)打印出来
Array
(
[first_name] => John
[last_name] => Jones
[business_name] =>
[phone] => 208 324-6916
[email] => johnjones@yahoo.com
[page_name] =>
[barcode_number] =>
[website] =>
[header] =>
[description_1] =>
[description_2] =>
[footer] =>
)
我想将这些值回显到表格单元格中。如果我写
<td>
<?php echo $meta['first_name']; ?>
</td>
我收到错误:Notice: Undefined index: first_name in . . .
但如果我这样做
$first_name = $meta['first_name'];
?>
<td>
<?php echo $first_name; ?>
</td>
有效。有谁知道发生了什么?感谢。
答案 0 :(得分:2)
您可能会在分配和输出之间的某处意外覆盖$ meta变量。打印完整数组
<td>
<?php var_dump($meta); ?>
</td>
并将其与您定义的那个进行比较。您可能会感到惊讶的是,它不是您之前设置的,甚至不再是阵列。这可以通过extract()等函数隐式发生。
答案 1 :(得分:0)
让我们重现您的阵列,经过全面测试(PHP 5.2,5.3,5.4,5.5):
$meta = [
'first_name' => 'John',
'last_name' => 'Jones',
'business_name' => '',
'phone' => '208 324-6916',
'email' => 'johnjones@yahoo.com',
'page_name' => '',
'barcode_number' => '',
'website' => '',
'header' => '',
'description_1' => '',
'description_2' => '',
'footer' => ''
];
echo $meta['first_name']; // John
所以我认为你不能将你的数组分配给$ meta。复制上面并测试。
好的,我从不说这个,但可能,你在一台很旧的服务器上维护了很旧的代码。通过这种方式,我可以将错误级别设置得更低。
error_reporting(E_ALL ^ E_NOTICE);