我有一个嵌套的数组,它是单词和数字的混合。它看起来像概念。我只需要处理编号的索引,例如15
和28
。我想这意味着我不能使用foreach
循环(或者我有办法)。你会怎么做?
myarray = (
someindex = (
field1 =
field2 =
);
15 = (
field1 =
field2 =
);
28 = (
field1 =
field2 =
);
anothertext = (
field1 =
field2 =
);
);
答案 0 :(得分:9)
foreach($myarr as $key => $item)
{
if(is_int($key))
{
// Do processing here
}
}
是的,这将循环遍历数组中的每个项,因此如果您想单独处理其他项,则只需添加else
块。
修改:将is_numeric
更改为is_int
。请参阅注释以获得解释。
答案 1 :(得分:4)
您可以使用foreach
foreach($myarray as $key=>$value)
{
if(is_int($key))
{
//process the entry as you want
}
}
答案 2 :(得分:3)
您可以使用FilterIterator
与foreach:
class IntKeyFilterIterator extends FilterIterator {
public function accept() {
return is_int(parent::key());
}
}
$it = new IntKeyFilterIterator(new ArrayIterator($array));
foreach ($it as $value) {
// Will only have those with int keys
}
答案 3 :(得分:0)
另一个版本。为任何纯数字键grep源数组,然后遍历该结果数组并进行处理。
$keys = preg_grep('/^\d+$/', array_keys($myarray)) {
foreach($keys as $key) {
doSomething($myarray[$key]);
}