在数组中选择自定义索引

时间:2010-08-26 19:41:12

标签: php arrays

我有一个嵌套的数组,它是单词和数字的混合。它看起来像概念。我只需要处理编号的索引,例如1528。我想这意味着我不能使用foreach循环(或者我有办法)。你会怎么做?

myarray = (

   someindex = (
     field1 = 
     field2 = 
   );

   15 = (
     field1 = 
     field2 = 
   );

   28 = (
     field1 = 
     field2 = 
   );

   anothertext = (
     field1 = 
     field2 = 
   );

);

4 个答案:

答案 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]);
}