如何过滤数组值

时间:2013-07-25 11:04:18

标签: php

我有一个像这样的数组,我需要从我的数组中只过滤字符串键,但我不知道该怎么做,我是php的新手,请帮助我。

Array
(
    [0] => Array
        (
            [id] => 2
            [0] => 2
            [status] => 0
            [1] => 0
            [user] => 86
            [2] => 86
            [project] => 0
            [3] => 0
            [task] => 36
            [4] => 36
            [day] => 06/30/2013
            [5] => 06/30/2013
        )
)

我想让这个数组像bellow

Array
(
    [0] => Array
        (
            [id] => 2
            [status] => 0
            [user] => 86
            [project] => 0
            [task] => 36
            [day] => 06/30/2013

        )
)

任何人都可以告诉我该怎么做?

7 个答案:

答案 0 :(得分:0)

您似乎正在使用fetch_array尝试fetch_assoc而不是(OP无法更改)

嗯,这是一个相当短的代码,可以满足您的需求。我正在开发一个更干净的版本:

function removeNumIndex($val,$key)
{
    global $arr;
    if(preg_match('#^[0-9]+$#',$key)>0) unset($arr[$key]);
}
array_walk($arr,'removeNumIndex');

答案 1 :(得分:0)

尝试使用fetch assoc代替fetch array

答案 2 :(得分:0)

如果您从数据库获取它,我建议您使用fetch_assoc

试试这个:

$array    = array(1,"test"=>2,2,"tes"=>3);

$keys     = array_filter(array_keys($array), function ($k){ return !is_numeric($k); }); 
$result   = array_intersect_key($array, array_flip($keys));

echo "<pre>";
print_r($result);

答案 3 :(得分:0)

这可能不是最好的方法,但是:

foreach($array as $key => $value) {
   if(is_string($key)) {
      $new_array[$key] = $value;
   }
}

哪里

$array 

是你的数组。

这将仅使用以字符串作为键的元素将数组重建为$ new_array。

答案 4 :(得分:0)

现在是另一种解决方案

      $counter=0; $newarray = array();
            foreach ( $arrray as $key => $value) {
                      if($counter%2){  
                         $newarray["$key"] =$value;
                       } 
                $counter++
            }

的print_r($ newarray);

答案 5 :(得分:0)

这是另一种方法,在我看来更具描述性。

<?php
$array = array(
    0       => 0,
    'zero'  => 0,
    1       => 1,
    'one'   => 1,
);

class Filter extends FilterIterator {
    public function accept() {
        return ! is_numeric($this->key());
    }
}

$array = iterator_to_array(
    new Filter(new ArrayIterator($array)
));

print_r($array);

/*
    Array
    (
        [zero] => 0
        [one] => 1
    )
*/

答案 6 :(得分:0)

例如像你的简单数组:

   $array = array(
      'id' => "2",
      '0' => "2",
      'status' => '0',
      '1' => '0',
      'user' => '86',
      '2' => '86',
      'project' => '0',
      '3' => '0',
      'task' => '36',
      '4' => '36',
      'day' => '06/30/2013',
      '5' => '06/30/2013'
   );

确定。现在是魔术的时候了。

              \||||||||||||||||||||||||||||||||||||||||||||||||||/       
               |||                                            |||        
               |||                                            |||         
               |||      $response = array_unique($array);     |||
               |||                                            |||         
               |||                                            |||     
              /||||||||||||||||||||||||||||||||||||||||||||||||||\

您可以访问PHP documentation