![](/img/trans.png)
[英]How to randomly loop through first layer of nested associative array in PHP?
[英]Cannot seem to loop through nested 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' => '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;
}
}
但是我收到警告:為foreach()錯誤提供了無效的參數。 我真的不知道為什么它不起作用,我還嘗試了所有我能想到的變化? 仍然遇到相同的錯誤?
更新我轉儲變量,$ links被描述為一個數組,但是當我添加一個is_array條件時,它返回false ??????
var_dump($links);
- string 'array (
0 =>
array (
'url' => 'http://www.iana.org/domains/example',
'text' => 'More information... ',
if (is_array($links))
{
echo "Its an array";
} - does not return
您的$this->links
是一個字符串。 您需要將其作為數組。 如果無法更改生成數組的位置,則可以嘗試以下操作。 我不建議使用eval()
,並且只能將其用作最后的手段。
$alinks=array();
eval('$alinks='.$this->links.';');
foreach ($alinks as $arrayId)
{
print "Link {\n";
foreach ($arrayId as $linktitle=>$linkdetail)
{
echo 'link: -'.$linktitle .'<br/> bit'.$linkdetail;
}
}
警告: eval()
語言結構非常危險,因為它允許執行任意PHP代碼。 因此不鼓勵使用它。 如果您已經仔細驗證了除了使用此構造之外沒有其他選擇,請特別注意不要在未經適當驗證的情況下將任何用戶提供的數據傳遞到其中。
該代碼看起來還不錯,但是為$ this-> links生成值的代碼可能這樣做是錯誤的。 嘗試在第一個foreach之前執行$ this-> links的print_r或var_dump,然后在第二個foreach之前對$ arrayId執行相同的操作,它可能會向您顯示導致問題的原因。 我唯一能想到的是$ this-> links實際上不是數組,因為以前某些東西無法為其生成數據或正確分配數據。
如果您不使用類,請刪除egthis提到的$ 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;
}
}
?>
嘗試這個
<?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>";
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.