2013-07-25 88 views
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 

     ) 
) 

任何一個可以請告訴我該怎麼辦呢?

+0

如果你從一個數據庫結果集得到這些,我建議只要求關聯的結果。你如何獲得這些? –

+0

是的,我從數據庫獲得,但我沒有訪問改變它,這種方式系統給出輸出 –

+0

@ChelzAdams這是你如何收集輸出的方式。不是系統(你是指服務器)如​​何「給」你。你能告訴我們更多的代碼嗎? –

回答

0

這可能不是最好的辦法,但:

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

$array 

是你的陣列。

這將僅使用以字符串作爲關鍵字的元素將數組重新構建到$ new_array。

+0

如果(is_string($ key)){}是這是好方法,我差點忘了,非常感謝你 –

+0

無後顧之憂你能接受答案,如果這是你在找什麼? :P – JohnnyFaldo

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'); 
+0

是的,我知道,但我沒有訪問改變主要查詢 –

+0

@ChelzAdams看到更新的答案 – SmokeyPHP

0

嘗試fetch assoc代替fetch array

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); 
0

現在另一溶液

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

的print_r($ newarray);

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 
    ) 
*/ 
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