0

我有这个数组

Array ( [name] => guardian [url] => http://www.guardian.co.uk )
Array ( [name] => cnn [url] => http://www.cnn.com )

我正在访问

$das_repeat = get_post_meta($post->ID, 'repeatable_fields', true);
    foreach ( $das_repeat as $fiel ) {
    echo $fiel['name'].'<br/>';
    //print_r($fiel);
    }

但是,我对通过数字索引访问每个值非常感兴趣。如何重新索引$fiel['name']以允许我通过索引访问每个值?

4

5 回答 5

2

您的数组没有数字索引,通过数字索引访问它实际上没有意义。您可以删除所有键并以数字方式重新索引数组:

$reindexed = array_values($das_repeat);

然而,再一次,这样做并没有真正的意义。如果您想在不知道其键的情况下遍历数组,您已经在使用foreach.

于 2013-09-02T16:11:02.620 回答
1

要重新索引数组,您可以使用array_values.

$array = array(
    'name' => 'A name',
    'attr2' => 'Attr 2'
);
$array = array_values($array);
var_dump($array);

结果:

array
  0 => string 'A name' (length = 6)
  1 => string 'Attr 2' (length = 6)

尽管正如@deceze 指出的那样,这有可能在您的代码中导致错误和/或意外行为,因此请明智地使用。例如,想想如果由于某种原因,第一个帖子元数据将被删除会发生什么。您显示的所有信息都是错误的。

注意:不是递归的

于 2013-09-02T16:11:25.103 回答
0
foreach ( $das_repeat as $id => $fiel ) {
    echo $fiel['name'].'<br/>';
    //print_r($fiel);
    // $id not contains the index
    }
于 2013-09-02T16:11:09.117 回答
0

使用array_values

foreach ( $das_repeat as $fiel ) {
    $field = array_values($fiel);
    echo $field[0]; //will output guardian and then cnn
}
于 2013-09-02T16:12:34.177 回答
0

正如其他答案所说,您可以使用array_values创建具有相同值但数字索引的新数组。如果您想保持关联数组原样,但想以数字方式访问它,您可以这样做:

$keys = array_keys($das_repeat);
$elementN = $das_repeat[$keys[$N]];
于 2013-09-02T16:15:46.570 回答