【问题标题】:Display values of multidimensional array returend from function显示函数返回的多维数组的值
【发布时间】:2009-10-11 12:05:33
【问题描述】:
function sitemap_galerija($tablica)
{
    require("include/konekcija.php");

    if($tablica == 'kategorije')
    {
        // Connect do database

        ...

        while($row = mysql_fetch_array($sql_result))
        {
            $kategorija['naziv'][] = $row["naziv"];
            $kategorija['naziv_url'][] = $row["naziv_url"];
        }

        return $kategorija;
    }   
}

我设法打印了数组的值,但不知道如何处理数组键。 我希望打印是这样的:

$kategorije = sitemap_galerija('kategorije');

foreach($kategorije as $kat)
{  
    echo  "<li><a href='$kategorija[naziv_url]'>$kategorija[naziv]</a></li>";
}

【问题讨论】:

    标签: php multidimensional-array


    【解决方案1】:

    你真的必须保存nazivnaziv_url之间的关系,它会在未来帮助你。像这样从数据库中获取它:

    $kategorija[$row['naziv_url']] = $row["naziv"];
    

    然后你可以像这样枚举这个数组:

    foreach($kategorija as $naziv_url => $naziv) {
    }
    

    始终使用您知道唯一的值作为键,在这种情况下我认为 url 是唯一的。

    【讨论】:

    • 这是我这个例子的绝佳解决方案。但是,如果我需要从数据库(id、日期等)获取更多数据,这不是一个好的解决方案。但是对于只有 2 个变量,这真的很好;)谢谢,Ile
    • 你总是可以使用子数组:)就像$collection[$row['id']] = array('name' =&gt; $row['name'], 'value' =&gt; $row['value'])一样。或者更好,就像我最近经常做的那样,$collection[$row['id']] = $row
    • 或多组不同的 key->value 如果更有意义的话。
    • 嗯,这个 $collection[$row['id']] = $row 看起来很有趣 :)
    【解决方案2】:

    您希望您的 $kategorija 数组使用普通数字作为键,并且对于每个数字,您将拥有一个带有 nazivnaziv_url 键的数组:

    while($row = mysql_fetch_array($sql_result))
    {
        // $kategorija['naziv'][] = $row["naziv"];
        // $kategorija['naziv_url'][] = $row["naziv_url"];
        $kategorija[] = array('naziv' => $row['naziv'], 'naziv_url' => $row['naziv_url']);
        // The following works as well, but then you store all the keys in the kategorija array and I don't know if that's what you want:
        // $kategorija[] = $row;
    }
    

    然后您可以将 foreach 循环调整为:

    foreach($kategorije as $kat)
    {  
        echo  '<li><a href="' . $kat['naziv_url'] . '">' . $kat['naziv'] . '</a></li>';
    }
    

    【讨论】:

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

    您将需要密钥来并行迭代两个数组:

    for ($i=0, $n=count($kategorije['naziv_url']); $i<$n; ++$i) {
        echo  "<li><a href='".$kategorija['naziv_url'][$i]."'>".$kategorija['naziv'][$i]."</a></li>";
    }
    

    【讨论】:

    • 感谢您的回答,我想我会对 Joost 的解决方案感到满意。
    猜你喜欢
    • 1970-01-01
    • 2018-09-25
    • 2012-05-07
    • 2017-03-06
    • 2021-04-08
    • 1970-01-01
    • 2014-07-23
    • 2018-01-05
    相关资源
    最近更新 更多