php数组插入和打印


php array insert and print

这是我的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作为值。

我是一个初学者,所以提前感谢你的帮助。我们将不胜感激。

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

您正在使用

$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);   

如果您在这里使代码过于复杂,请尝试:

$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元素的数组。

你能解释一下你想在这里实现什么吗?