我有一个像这样的数组,我需要从我的数组中只过滤字符串键,但我不知道该怎么做,我是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
)
)
我想让这个数组像bellow
Array
(
[0] => Array
(
[id] => 2
[status] => 0
[user] => 86
[project] => 0
[task] => 36
[day] => 06/30/2013
)
)
任何人都可以告诉我该怎么做?
答案 0 :(得分:0)
您似乎正在使用(OP无法更改)fetch_array
尝试fetch_assoc
而不是
嗯,这是一个相当短的代码,可以满足您的需求。我正在开发一个更干净的版本:
function removeNumIndex($val,$key)
{
global $arr;
if(preg_match('#^[0-9]+$#',$key)>0) unset($arr[$key]);
}
array_walk($arr,'removeNumIndex');
答案 1 :(得分:0)
尝试使用fetch assoc
代替fetch array
答案 2 :(得分: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);
答案 3 :(得分:0)
这可能不是最好的方法,但是:
foreach($array as $key => $value) {
if(is_string($key)) {
$new_array[$key] = $value;
}
}
哪里
$array
是你的数组。
这将仅使用以字符串作为键的元素将数组重建为$ new_array。
答案 4 :(得分:0)
现在是另一种解决方案
$counter=0; $newarray = array();
foreach ( $arrray as $key => $value) {
if($counter%2){
$newarray["$key"] =$value;
}
$counter++
}
的print_r($ newarray);
答案 5 :(得分: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
)
*/
答案 6 :(得分: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