php数组插入和打印

时间:2015-02-14 00:31:34

标签: php arrays

这是我的PHP程序的一部分。

//for example: $rec_count = 30

$totalpages=(int)$rec_count/10;     
$index=0;           
$pageslink[$totalpages]='';
while($index <= $totalpages ){
        $pageslink['index']=$index;
        echo '<br>Index: '.$index.'<br>';
        echo '<br>Page '.$pageslink['index'].' ';
        $index++;
    }

print_r($pageslink);    

它是这样的:

Index: 0

Page 0

Index: 1

Page 1

Index: 2

Page 2

Index: 3

Page 3 Array ( [3] => [index] => 3 ) 

它应该是pageslink[0] = 1; pageslink[1 ]= 2; pageslink[3] = 3;但是当我print_r() pageslink数组时,只有3作为值。我一直试图找出为什么在数组中只插入3作为值。

我是初学者,所以提前感谢您的帮助。非常感谢。

3 个答案:

答案 0 :(得分:0)

您正在使用

$pageslink['index'] = $index;

这意味着您将数组中指定键'index'的项设置为变量$index的值,而不是使用$index作为键。

在PHP(和许多其他语言)中,您可以引用数组中具有index数字(0,1,2等)或单词(named key)的项目。 例如:

$myArray = ['John', 'London'];
echo $myArray[0]; // John
echo $myAray[1]; // London

$myArray = ['name' => 'John', 'city' => 'london'];
echo $myArray['name']; // John
echo $myArray['city']; // London

您现在正在做的是在每个循环中将数组中的相同项目(您正在调用index的项目)设置为新值,覆盖其旧值。因此,在所有循环之后,您只能保存最后一个值。

你想要这样的东西:

$pageslink[$index] = $index + 1;

将转换为:

$pageslink[0] = 1; // first loop
$pageslink[1] = 2; // second loop
$pageslink[2] = 3; // third loop

顺便说一下,for循环在你的示例代码中会更干净:

$rec_count = 30
$totalpages=(int)$rec_count/10;
$pageslink = array(); // this is how to create an array, not with ''
for($i=0;i<$totalpages;$i++){
    $pageslink[] = $i;
}
print_r($pageslink);   

答案 1 :(得分:0)

在这个答案的简短版本中,PHP中的数组从0开始计数,而不是1。因此,在第一个循环中,它将是0,第二个循环将是1,依此类推。

答案 2 :(得分:0)

你在这里使代码复杂化,试试:

$totalpages=(int)$rec_count/10;     
$index=0;           
$pageslink = array();
while($index <= $totalpages ){
        $pageslink[]=$index+1;
        echo '<br>Index: '.$index.'<br>';
        echo '<br>Page '.$pageslink[$index].' ';
        $index++;
    }

print_r($pageslink);

但这段代码非常奇怪。您只需创建n元素数组。

你能解释一下你在这里想要达到的目标吗?