2013-07-06 144 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 [第五] =>第五 )