我有这个数组
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']
以允许我通过索引访问每个值?
答案 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]];