Php 似乎无法在嵌套关联数组中循环

Php 似乎无法在嵌套关联数组中循环,php,foreach,associative-array,Php,Foreach,Associative Array,我在谷歌上搜索到了一些根本看不见的东西,但毫无用处 我有以下数组 $this->links = array ( 0 => array ( 'url' => 'http://maps.doc.govt.nz/Viewer/Index.html?viewer=rwa', 'text' => 'DOC maps: Discover the outdoors ', ), 1 => array ( 'url' => 'ht

我在谷歌上搜索到了一些根本看不见的东西,但毫无用处

我有以下数组

$this->links = array (
  0 => 
  array (
    'url' => 'http://maps.doc.govt.nz/Viewer/Index.html?viewer=rwa',
    'text' => 'DOC maps: Discover the outdoors ',
  ),
  1 => 
  array (
    'url' => 'https://booking.doc.govt.nz/',
    'text' => ' ',
  ),
  2 => 
  array (
    'url' => 'https://booking.doc.govt.nz/',
    'text' => ' Book Great Walks, selected huts, campsites and more.  ',
  ),
  3 => 
  array (
    'url' => 'https://careers.doc.govt.nz/jobtools/jncustomsearch.searchResults?in_organid=18174&in_searchBut=Search',
    'text' => 'Jobs at DOC ',
  ),
  4 => 
  array (
    'url' => 'http://blog.doc.govt.nz/',
    'text' => ' Conservation blog ',
  )....
我正试着用这个循环

foreach ($this->links as $arrayId) 
            {
            print "Link {\n";
            foreach ($arrayId as $linktitle=>$linkdetail)
                {
                echo 'link: -'.$linktitle .'<br/> bit'.$linkdetail;
                }
            }


代码看起来不错,但生成$this->links值的代码可能有错误。尝试在第一个foreach之前对$this->links执行打印或var\u转储,然后在第二个foreach之前对$arrayId执行相同的操作,它可能会显示问题的原因。我能想到的唯一一件事是,$this->links实际上不是一个数组,因为以前没有为它生成数据或正确分配数据。

代码看起来不错,但生成$this->links值的代码可能是错误的。尝试在第一个foreach之前对$this->links执行打印或var\u转储,然后在第二个foreach之前对$arrayId执行相同的操作,它可能会显示问题的原因。我能想到的唯一一件事是,$this->links实际上不是一个数组,因为以前没有为它生成数据或正确分配数据。

如果不使用类,请删除egig提到的$this,然后尝试以下操作:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 0);

$links = array (
  0 =>
  array (
    'url' => 'http://maps.doc.govt.nz/Viewer/Index.html?viewer=rwa',
    'text' => 'DOC maps: Discover the outdoors ',
  ),
  1 =>
  array (
    'url' => 'https://booking.doc.govt.nz/',
    'text' => ' ',
  ),
  2 =>
  array (
    'url' => 'https://booking.doc.govt.nz/',
    'text' => ' Book Great Walks, selected huts, campsites and more.  ',
  ),
  3 =>
  array (
    'url' => 'https://careers.doc.govt.nz/jobtools/jncustomsearch.searchResults?in_organid=18174&in_searchBut=Search',
    'text' => 'Jobs at DOC ',
  ),
  4 =>
  array (
    'url' => 'http://blog.doc.govt.nz/',
    'text' => ' Conservation blog ',
  )
);

foreach ($links as $arrayId)
{
        print "Link {\n";
        foreach ($arrayId as $linktitle=>$linkdetail)
        {
                echo 'link: -'.$linktitle .'<br/> bit'.$linkdetail;
        }
}
?>

如果您不使用类,请按照egig所述删除此,然后尝试以下操作:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 0);

$links = array (
  0 =>
  array (
    'url' => 'http://maps.doc.govt.nz/Viewer/Index.html?viewer=rwa',
    'text' => 'DOC maps: Discover the outdoors ',
  ),
  1 =>
  array (
    'url' => 'https://booking.doc.govt.nz/',
    'text' => ' ',
  ),
  2 =>
  array (
    'url' => 'https://booking.doc.govt.nz/',
    'text' => ' Book Great Walks, selected huts, campsites and more.  ',
  ),
  3 =>
  array (
    'url' => 'https://careers.doc.govt.nz/jobtools/jncustomsearch.searchResults?in_organid=18174&in_searchBut=Search',
    'text' => 'Jobs at DOC ',
  ),
  4 =>
  array (
    'url' => 'http://blog.doc.govt.nz/',
    'text' => ' Conservation blog ',
  )
);

foreach ($links as $arrayId)
{
        print "Link {\n";
        foreach ($arrayId as $linktitle=>$linkdetail)
        {
                echo 'link: -'.$linktitle .'<br/> bit'.$linkdetail;
        }
}
?>

试试这个

<?php
$this->links = array (
  0 => 
  array (
    'url' => 'http://maps.doc.govt.nz/Viewer/Index.html?viewer=rwa',
    'text' => 'DOC maps: Discover the outdoors ',
  ),
  1 => 
  array (
    'url' => 'https://booking.doc.govt.nz/',
    'text' => ' ',
  ),
  2 => 
  array (
    'url' => 'https://booking.doc.govt.nz/',
    'text' => ' Book Great Walks, selected huts, campsites and more.  ',
  ),
  3 => 
  array (
    'url' => 'https://careers.doc.govt.nz/jobtools/jncustomsearch.searchResults?in_organid=18174&in_searchBut=Search',
    'text' => 'Jobs at DOC '
  ));

echo "<pre>";

for($i=0;$i<=count($this->links)-1;$i++)
{
    foreach($this->links[$i] as $value)
    {
        print_r($value);
        echo "<br>";


    }
}
?>

试试这个

<?php
$this->links = array (
  0 => 
  array (
    'url' => 'http://maps.doc.govt.nz/Viewer/Index.html?viewer=rwa',
    'text' => 'DOC maps: Discover the outdoors ',
  ),
  1 => 
  array (
    'url' => 'https://booking.doc.govt.nz/',
    'text' => ' ',
  ),
  2 => 
  array (
    'url' => 'https://booking.doc.govt.nz/',
    'text' => ' Book Great Walks, selected huts, campsites and more.  ',
  ),
  3 => 
  array (
    'url' => 'https://careers.doc.govt.nz/jobtools/jncustomsearch.searchResults?in_organid=18174&in_searchBut=Search',
    'text' => 'Jobs at DOC '
  ));

echo "<pre>";

for($i=0;$i<=count($this->links)-1;$i++)
{
    foreach($this->links[$i] as $value)
    {
        print_r($value);
        echo "<br>";


    }
}
?>

您的
$this->links
是一个字符串。你需要它是一个数组。如果无法将is更改为生成它的数组,则可以尝试以下操作。我不建议使用
eval()
,它只能作为最后手段使用

$alinks=array();
eval(“$alinks=”.$this->links.;”);
foreach($alinks作为$arrayId)
{
打印“链接{\n”;
foreach($linktitle=>$linkdetail的数组ID)
{
回显“link:-”.$linktitle.
位“$linkdetail; } }
警告:
eval()
语言结构是非常危险的,因为它允许执行任意PHP代码。因此不鼓励使用它。如果您已经仔细验证了除了使用此结构之外没有其他选择,请特别注意不要在未经正确验证的情况下将任何用户提供的数据传递给它事先盖上盖子


您的
$this->links
是一个字符串。您需要将其设置为数组。如果无法将其更改为生成它的数组,您可以尝试以下操作。我不建议使用
eval()
,必须将其用作最后手段

$alinks=array();
eval(“$alinks=”.$this->links.;”);
foreach($alinks作为$arrayId)
{
打印“链接{\n”;
foreach($linktitle=>$linkdetail的数组ID)
{
回显“link:-”.$linktitle.
位“$linkdetail; } }
警告:
eval()
语言结构是非常危险的,因为它允许执行任意PHP代码。因此不鼓励使用它。如果您已经仔细验证了除了使用此结构之外没有其他选择,请特别注意不要在未经正确验证的情况下将任何用户提供的数据传递给它事先盖上盖子


$this
是指对象或类,它在哪里?$this是我的类(一个视图)。我删除了$this,但仍然得到相同的错误您的变量
$links
字符串
不是
数组
$this
是指对象或类,它在哪里?$this是我的类(一个视图)。我删除了$this,但仍然得到相同的错误您的变量
$links
字符串
不是
数组
,谢谢,但我删除了$this并添加了错误报告,但仍然得到相同的错误。我做了一个变量转储,以便从数组中打印出来,因此它呈现良好?@redstuble:您可以发布整个数组吗rray?谢谢,但我删除了$this并添加了错误报告,但仍然得到了相同的错误。我做了一个var_转储以从数组中获取打印结果,因此它呈现良好?@redstuble:您可以发布整个数组吗?谢谢,但我可以var_转储数组finea谢谢,但我可以var_转储数组fineaaaargh我使用var_导出来响应转储我完全忘记了。aaaargh我使用var_导出来回显转储,我完全忘记了。
$alinks=array();
eval('$alinks='.$this->links.';');
foreach ($alinks as $arrayId) 
        {
        print "Link {\n";
        foreach ($arrayId as $linktitle=>$linkdetail)
            {
            echo 'link: -'.$linktitle .'<br/> bit'.$linkdetail;
            }
        }