2013-07-06 60 views
4

我正在一個網站,我們需要刪除一個數組的類型是整數的索引。 您有任何想法或建議。 我的數組是這樣的:刪除整數索引的數組

Array 
(
    [0] => first 
    [first] => second 
    [1] => second 
    [second] => second 
    [2] => third 
    [third] => third 
    [3] => forth 
    [forth] => v 
    [4] => fifth 
    [fifth] => fifth 
) 

我們怎樣才能從array.One件事刪除整數索引需要注意的是,我們還沒有靜態數組我們不知道指數有多少。

需要像這樣:

Array 
( 
    [first] => second 
    [second] => second 
    [third] => third 
    [forth] => v 
    [fifth] => fifth 
) 
+3

你從數據庫中得到這個?如果是的話那哪個?如果這是MySQL使用'mysqli_fetch_assoc'而不是'mysqli_fetch_array' –

+0

葉@YotamOmer感謝這 –

+0

加入爲答案。 –

回答

7

數據庫解決方案:

從MySQL數據庫的使用只得到關聯數組:的mysqli_fetch_assoc()代替mysqli_fetch_array()

mysqli_fetch_array()提取整個數組 - 整數索引以及列名作爲鍵。

mysqli_fetch_assoc()只提取列名作爲關鍵字。 - 從而擺脫整數鍵。


通用解決方案:

做你一般問我會用:

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

您也可以使用is_int(),如果你喜歡..

+0

我的意思是如果數組不是來自數據庫。我們可以爲相同的結果做什麼。 –

+0

已更新 - 查看新代碼 –

+0

謝謝你看起來很棒! –

3

另一種方式要做到這一點: -

$array1 = array("6566"=>"zd xf", "2"=>2, "c"=>3, "d"=>4, "e"=>5); 
$keys=array_filter(array_keys($array1), "is_numeric"); 
$out =array_diff_key($array1,array_flip($keys)); 
print_r($out); 

輸出:

Array 
(
[c] => 3 

[d] => 4 

[e] => 5 

) 
+0

我看不到需要創建一個功能...你可以寫同樣的東西,只是沒有像這樣的函數: $ array1 = array(「6566」=>「zd xf」,「2」=> 2,「c」=> 3,「d」=> 4 ,「e」=> 5); $ keys = array_filter(array_keys($ array1),「is_numeric」); $ out = array_diff_key($ array1,array_flip($ keys)); print_r($ out); – gabrielem

+0

@ gabrielem謝謝(回調本機函數「is_numeric」)。 –

3

除去數組的整數索引值。

$array1=array(); 
$array = array(0 => first,first => second,1 => second,second => second,2 => third,third => third,3 => forth,forth => v,4 => fifth,fifth => fifth); 
foreach ($array as $key=>$value){ 
    if(gettype($key)=='integer'){ 
     unset($key); 
     unset($value); 
    }else{ 
    $array1[$key]=$value; 
    } 
} 
print_r($array1); 

出來這樣。

Array 

( [第一] =>第二 [第二] =>第二 [第三] =>第三 [闡述] => v [第五] =>第五 )