Php 阵列不使用echo
我在WordPress模板中有下面的代码,该模板生成数组Php 阵列不使用echo,php,Php,我在WordPress模板中有下面的代码,该模板生成数组$meta: <?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 $list
$meta
:
<?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>
我想将这些值回显到表单元格中。如果我写
$first_name = $meta['first_name'];
?>
<td>
<?php echo $first_name; ?>
</td>
它起作用了。有人知道发生了什么事吗?谢谢。让我们重新生成经过全面测试的数组(PHP5.2、5.3、5.4、5.5): 所以我认为您没有将数组正确分配给$meta。复制以上内容并进行测试 它是旧服务器上的旧代码吗? 好的,我从来没有这样说过,但是可能,您在一个非常旧的服务器上维护非常旧的代码。这样,我可以将反错误级别设置得更低
<td>
<?php var_dump($meta); ?>
</td>
您可能无意中覆盖了赋值和输出之间的某个$meta变量。打印完整数组
并将其与您定义的进行比较。您可能会惊讶于它不是您以前设置的,甚至不再是数组。对于extract()等函数,这可能会隐式发生。请提供您遇到问题的完整代码?我的意思是$meta定义在哪里完成了?声明数组的方法是错误的,您可以声明为数组('first_name'=>'John','last_name'=>'Jones'),然后您将使用echo。我认为这是$meta@WisdmLabsNo的打印输出,这不是问题,保证
$meta
不是您在echo..
行中所认为的;不多也不少<代码>变量转储($meta)紧接在echo之前。我猜您在检查其内容和echo之间覆盖了$meta
。我编辑这个问题是为了说明$meta是如何生成的。(在生成代码片段之后编辑)您每次都覆盖$meta var,因此您的输出应该在同一个foreach$listings循环中,因为只有最后一个变量在后面,或者把它放到某个临时数组中,然后在该数组上循环,当你生成sI时,从内部运行一个var_dump($meta),数组仍然在那里。对,你是什么意思?对不起。我是在回应进一步的建议,$meta数组在我在标记中引用它之前就已经消失了。看起来不像。就旧代码而言,我不这么认为。服务器位于运行WordPress 4.3.2和PHP5.5.9的wpengine。我现在可以工作了。问题是我从数据库中提取的一条记录已损坏。下一个是正常的,所以看起来数据是正常的,但它是第一个抛出错误的。既然奥列格第一个回答说数据已经不存在了,我就把它给了他。
$first_name = $meta['first_name'];
?>
<td>
<?php echo $first_name; ?>
</td>
$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
error_reporting(E_ALL ^ E_NOTICE);
<td>
<?php var_dump($meta); ?>
</td>