2011-11-12 27 views
0

这是PHP代码:腓子阵码增加了额外的价值

$slavesites = array(
    'Category1' => array('Anchor1', 'http://www.test1.com'), 
    'Category2' => array('Anchor2', 'http://www.test2.com') 
); 

foreach($slavesites as $category => $slavesite){ 
    echo $category; 
    foreach($slavesite as $anc => $url){    
     echo $anc.'<br>'; 
     echo $url.'<br>'; 
    } 
} 

问题是,当我运行代码,我得到一个 “0” 和 “1”:

Category10 **--- WHERE DOES THE 0 COME FROM?** 
Anchor1 
1 **---- WHERE DOES THE 1 COME FROM?** 
http://www.test1.com 
Category20 --- WHERE DOES THE 0 COME FROM? 
Anchor2 
1 ---- WHERE DOES THE 1 COME FROM? 
http://www.test2.com 

泰!:) 希望你可以帮忙...

回答

2

第二个foreach遍历数组没有适当的索引集。这种方式默认指数(0,1,2,...)被使用,因此输出中的数字。

例如其实你的定义是这样的:

$slavesites = array(
    'Category1' => array(0 => 'Anchor1', 1 => 'http://www.test1.com'), 
    'Category2' => array(0 => 'Anchor2', 1 => 'http://www.test2.com') 
); 

你应该在内部循环使用,而不是“的foreach”名单':

list($anc, $url) = $slavesite; 
+0

它的工作,非常多....我有一个问题,而不是“Category1”和“Category2”值我使用相同的值,我的第一个foreach循环将在网上显示第二个数组的数据,而不是首先...这对我来说很重要,因为有时候我对多个网站有相同的分类。 – webmasters

+0

你的意思是? array('Cat'=> array(...),'Cat'=> array(...))? – shomeax

+0

是的,绝对是你的意思。运气不好这是不行的。 ('Name','http:// url /'),数组('Name2','http: // url2 /')),'Category2'=> ...); – shomeax

3

如果你想通过你的阵列一样,你已经循环存储元素作为键值对:

$slavesites = array(
    'Category1' => array('Anchor1' => 'http://www.test1.com'), 
    'Category2' => array('Anchor2' => 'http://www.test2.com') 
); 

01显示,因为你没有定义的键,它therefores使用nume rical钥匙。