按数字索引访问数组

时间:2013-09-02 16:08:32

标签: php

我有这个数组

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']以允许我通过索引访问每个值?

5 个答案:

答案 0 :(得分:2)

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

$reindexed = array_values($das_repeat);

但是,再一次,这样做并没有多大意义。如果你想在不知道其密钥的情况下遍历数组,那么你已经使用foreach进行了迭代。

答案 1 :(得分: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指出的那样,这有可能在您的代码中导致错误和/或意外行为,因此请明智地使用。例如,如果出于某种原因,将删除第1个帖子元,请考虑会发生什么。您显示的所有信息都是错误的。

注意:不是递归的

答案 2 :(得分:0)

foreach ( $das_repeat as $id => $fiel ) {
    echo $fiel['name'].'<br/>';
    //print_r($fiel);
    // $id not contains the index
    }

答案 3 :(得分:0)

使用array_values

foreach ( $das_repeat as $fiel ) {
    $field = array_values($fiel);
    echo $field[0]; //will output guardian and then cnn
}

答案 4 :(得分:0)

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

$keys = array_keys($das_repeat);
$elementN = $das_repeat[$keys[$N]];