0

我有一个这样的数组,我只需要从数组中过滤字符串键,但我不知道该怎么做,我是 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
        )
)

我想像下面这样制作这个数组

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

        )
)

谁能告诉我该怎么做?

4

7 回答 7

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 文档

于 2013-07-25T11:23:47.867 回答
0

您似乎正在使用fetch_arraytryfetch_assoc代替(OP 无法更改)

好吧,这是一个相当短的代码量,可以满足您的需求。不过,我正在开发一个更清洁的版本:

function removeNumIndex($val,$key)
{
    global $arr;
    if(preg_match('#^[0-9]+$#',$key)>0) unset($arr[$key]);
}
array_walk($arr,'removeNumIndex');
于 2013-07-25T11:07:08.883 回答
0

尝试fetch assoc代替fetch array

于 2013-07-25T11:07:48.323 回答
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);
于 2013-07-25T11:08:23.470 回答
0

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

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

在哪里

$array 

是你的阵列。

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

于 2013-07-25T11:08:25.060 回答
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
    )
*/
于 2013-07-25T11:17:03.110 回答
0

现在另一种解决方案

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

print_r($newarray);

于 2013-07-25T11:14:57.067 回答