我使用PHP并拥有一个如下所示的数组:
Array
(
[34] => Array
(
[slug] => my_slug
[title] => my_title
)
[33] => Array
(
[slug] => my_slug2
[title] => my_title2
)
)
我还需要循环设置,键34带值,键33带值。我可以用foreach循环它们但在我的情况下我不能使用foreach循环。
问题 - 按索引循环?
因为在我的情况下我不能使用foreach循环,所以我需要提出一些可以通过索引循环它们的东西。
我自己的想法
如果我可以通过索引获取数组键,那就没问题了。有可能,怎么样?
<?php print_r( $my_array[index][0] ); ?>
<?php print_r( $my_array[index][1] ); ?>
原因
我不能使用foreach的原因是我依赖于计数器。如果计数器显示3它想要获得第四个键(数组从0开始)。
示例1
$counter = 1;
然后它应该返回[33]的内容,因为它在索引1上。
示例2
$counter = 0;
然后它应该返回[34]的内容,因为它在索引0上。
答案 0 :(得分:1)
使用array_keys
从数组中取出密钥,然后使用计数器查找要迭代的索引。然后,您可以使用简单的foreach循环迭代子数组。
$keys = array_keys($array);
$index = $keys[$counter];
$subArray = $array[$index];
foreach($subArray as $key => $value) {
// do stuff
}
对于您在示例array_keys($array)
中提供的数组,返回
array(
0 => 34,
1 => 33
);
因此我们可以在这个新数组上使用counter来计算我们想迭代的实际数组中的索引。
$index = $keys[$counter];
因此,如果$counter = 0
,那么$index
现在是34
。现在,它很简单,可以在原始数组上使用$index
来获取我们想要迭代的子数组。
$subArray = $array[$index];
在此示例中$counter
为0
,变量$subArray
现在成立
array(
'slug' => 'my_slug'
'title' => 'my_title'
);
在没有foreach
循环的情况下,将此答案适应工作非常简单。阅读array_keys文档并考虑该函数如何允许其他类型的循环使用字符串键迭代数组。
答案 1 :(得分:1)
我不能使用foreach的原因是我依赖于计数器。如果计数器显示3它想要获得第四个键(数组从0开始)。
没问题:
var_dump($array[array_keys($array)[3]]);
(由于数组解除引用语法,这需要PHP 5.4)
对于PHP 5.3或更早版本:
$keys = array_keys($array);
var_dump($array[$keys[3]]);
答案 2 :(得分:1)
这可能就是你要找的......
$counter = 3; // for example
$keys = array_keys($my_array);
$needed_entry = $keys[ $counter ];
print_r( $my_array[ $needed_entry ] );