Php子阵列代码增加了额外的值

时间:2011-11-12 15:12:18

标签: php arrays

这是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 个答案:

答案 0 :(得分:3)

如果你想像这样遍历你的数组,你必须将元素存储为键值对:

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

显示01,因为您没有定义键,因此使用数字键。

答案 1 :(得分:2)

第二个foreach迭代数组而没有设置适当的索引。这样就使用了默认索引(0,1,2,...),因此也就是输出中的数字。

e.g。实际上你的定义是这样的:

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

你应该在内循环中使用'list'而不是'foreach':

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