PHP数组未定义索引问题

时间:2016-11-28 10:10:18

标签: php arrays

我正在使用XML创建站点地图。当我尝试将多个值放入数组时,我得到第二个变量的未定义索引。

以下示例代码。

我如何收集结果:

$tempArray = array();
switch ($type)
    {
case "v":
    $dbResult = $db->get_dbResult("Select title,id,vdate from " . DB_PREFIX . "tpV order by id desc " . this_offset($getFirstK));
    if ($dbResult)
        {
        foreach($dbResult as $pResult)
            {
            $tempArray[]['loc']   = convert_to_URL($pResult->id, $pResult->title);
            $tempArray[]['vdate'] = $pResult->vdate;
            }
        }

    break;

我如何打印结果。

array_filter($tempArray = array_map("unserialize", array_unique(array_map("serialize", $tempArray))));
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

foreach($tempArray as $tVars)
    {
    echo '<url>
<loc>
'.$tVars["loc"].'
</loc>
<lastmod>'.$tVars["vdate"].'</lastmod>
<changefreq>weekly</changefreq>
</url>';
    }
echo '</urlset>';

我收到$tempArray[]['vdate']未定义的索引错误。我有什么遗失的吗?

2 个答案:

答案 0 :(得分:1)

$tempArray[]['loc']   = convert_to_URL($pResult->id, $pResult->title);
$tempArray[]['vdate'] = $pResult->vdate;

这里你创建了两个数组,一个是loc键,另一个是vdate,所以两个arrys中的一个必须是未定义的。

修复此错误,只需将两行更改为

即可
$tempArray[] = array('loc' => convert_to_URL($pResult->id, $pResult->title), 'vdate' => $pResult->vdate);

这是一个demo

<?php
  $array=array();
  $array[]['a'] = 'a';
  $array[]['b'] = 'b';
  echo json_encode($array);

结果:[{"a":"a"},{"b":"b"}]

答案 1 :(得分:0)

您可以设置密钥。

$i = 0;
foreach($dbResult as $pResult)
{
            $tempArray[$i]['loc']   = convert_to_URL($pResult->id, $pResult->title);
            $tempArray[$i]['vdate'] = $pResult->vdate;
$i++;
}