Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 阵列不使用echo_Php - Fatal编程技术网

Php 阵列不使用echo

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

我在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 $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>