2013-02-26 52 views
0

我从数据库中提取最新的3篇新闻文章,并且需要通过它们从中拉出的顺序访问它们,所以在数组中的第一个位置,第二个位置等等来显示它们在我的网页的随机部分。我碰到访问数组键,但那是行不通的,我哪里错了?提前致谢!PHP按位置获取数组的值

$value = array_slice($blog, 0, 1); 
echo $value; 
+2

'$ blog [0]','$ blog [1]',...?或者你究竟在问什么? – deceze 2013-02-26 10:01:04

+0

'echo $ blog [0]; echo $ blog [1]; echo $ blog [2]'应该工作吗? – dognose 2013-02-26 10:01:32

+0

你应该循环通过阵列..不要切片 – mithunsatheesh 2013-02-26 10:03:11

回答

1

我认为你正在寻找一个foreach循环或类似的东西:

$blog = array('foo', 'bar', 'cat'); 
foreach ($blog as $article) { 
    echo $article; 
} 
/** 
* Gives you: 
* 
     foo 
     bar 
     cat 
*/ 

但是如果你想用的功能,做到这一点哟你可以使用array_shift。这从一个数组中删除第一个元素,并返回:

$article1 = array_shift($blog); // $blog is now `array('bar', 'cat')` 
echo $article1; // >> foo 

$article2 = array_shift($blog); // $blog is now `array('cat')` 
echo $article2; // >> bar 

$article3 = array_shift($blog); // $blog is now `array()` 
echo $article2; // >> cat 

或者,如果你想保持原来的$blog数组,使用数组指针功能,如currentnextprevresetend

reset($blog); 
$article1 = current($blog); // >> foo 
$article2 = next($blog); // >> bar 
$article3 = next($blog); // >> cat 
1

使用此:

$value = array_shift($blog); 

要获得第二个

$value2 = array_shift($blog); 

和第三:

$value3 = array_shift($blog); 
+0

,如果你想保留旧的$博客数组未触及使用'$ value = array_shift(array_values($ blog));' – ulkas 2013-02-26 10:01:10

+0

我不认为这是行得通的? '$ value'和'$ value2'都是字符串,因此在它们上调用'array_shift'会引发错误。 – 2013-02-26 10:03:13

+0

@Wiseguy:谢谢,这是我的不好,我纠正了它。 – 2013-02-26 10:03:27

1

您有三种不同的方式来实现这一目标:

1.每次要获取下一个值时调用array_shift($ blog)。

$value = array_shift($blog); 

每次做array_shift将返回数组中的下一个条目的时间。

函数array_pop类似,但每次都返回数组中的最后一个条目。

$value = $blog[0] 

这给所述阵列中的第二个条目:

2.使用索引

这给出阵列中的第一个条目只需访问该阵列的每个条目

$value = $blog[1] 

这给出了阵列中的第n个值:

$value = $blog[n-1]; 

3.或者最后你可以简单地遍历数组和回声出每个条目(可能不适合,如果你不想顺序呼应了在同一个地方的条目)

foreach ($blog as $blog_entry) { 
    echo $blog_entry; 
}