2011-05-13 18 views
0

我有一個返回一個數組的ldap請求,但是返回的數組充滿了「counts」和奇怪的指針,因爲這個應用程序是一個旨在用於移動設備上的Javascript的API,文字越少越好。來自Array的PHP條計數值

刪除所有沒有密鑰數的值的最有效方法是什麼?以及那些似乎在說什麼鍵(例如[0] => cn)?

Array 
(
    [status] => OK 
    [count] => 4 
    [results] => Array 
     (
      [count] => 3 
      [0] => Array 
       (
        [cn] => Array 
         (
          [count] => 1 
          [0] => James Bee 
         ) 

        [0] => cn 
        [umanprimaryou] => Array 
         (
          [count] => 1 
          [0] => Awesome School 
         ) 

        [1] => umanprimaryou 
        [ou] => Array 
         (
          [count] => 2 
          [0] => School of Awesome 
          [1] => Faculty of Engineering 
         ) 
etc... 

針對用於

Array 
(
    [status] => OK 
    [results] => Array 
     (
      [0] => Array 
       (
        [cn] => Array 
         (
          [0] => James Bee 
         ) 
        [umanprimaryou] => Array 
         (
          [0] => Awesome School 
         ) 
        [ou] => Array 
         (
          [0] => School of Awesome 
          [1] => Faculty of Engineering 
         ) 
etc... 

爲了進一步說明我想取消設置所有第[count] =>值對,並且如果可能的值,例如[0] =>結果陣列以cN 。

+0

你能展示一個你想要的數組輸出的例子嗎? – stevecomrie 2011-05-13 21:17:07

+0

似乎你過早地優化了一些可能不是真正問題的東西。你知道這些額外的領域是否嚴重降低你的應用程序? – JaredMcAteer 2011-05-13 21:19:14

+0

@OriginalSyn它們不一定是降級,但由於連接到API的設備將是移動設備,所以我可以使數據越小越好,並且在相關應用程序中根本不使用計數字段。 @SteveComie,看帖子 – 2011-05-13 21:20:35

回答

3

未經測試的代碼:

function strip_count(array $arr) { 
    foreach ($arr as $key => $value) { 
     if (is_array($arr[$key])) { 
      strip_count($arr[$key]); 
     } else { 
      if ($key == 'count') { 
       unset($arr[$key]); 
      } 
     } 
    } 
} 

編輯:我寫這個你編輯你的問題之前,但它不應該太難修改這個遞歸函數來去除您要刪除,以及其他的東西。

+1

這不需要作爲參考傳遞?或者在給定的數組上未設置工作?另外我怎樣才能添加剝離[0] => cn的? – 2011-05-13 21:26:50

+0

「從PHP 5開始,通過引用來直接更改數組的值是可能的」 - http://php.net/manual/en/language.types.array.php – 2011-05-13 21:31:42