2010-08-09 46 views
3

我有这个数组:我该如何简化这个数组?

Array 
(
    [0] => Array 
     (
      [tag_id] => 1 
     ) 

    [2] => Array 
     (
      [tag_id] => 3 
     ) 

    [22] => Array 
     (
      [tag_id] => 44 
     ) 

    [23] => Array 
     (
      [tag_id] => 45 
     ) 

    [25] => Array 
     (
      [tag_id] => 47 
     ) 

    [26] => Array 
     (
      [tag_id] => 48 
     ) 

) 

我想它完成的是这个样子所以其简单对我来说,循环和插入的每个值转换成数据库:

Array 
(
    [0] => 1 
    [1] => 3 
    [2] => 44 
    [3] => 45 
    [4] => 47 
    [5] => 48 
) 
+4

您是如何在第一个位置创建数组的?或者这些数据是发送给您的,即您无法控制?与 – 2010-08-09 21:17:49

回答

8

您可以使用array_map

PHP 5.3或更高版本:

$callback = function($value) { 
    return $value['tag_id']; 
}; 
$result = array_map($callback, $array); 

低于5.3:

function collapseTagIds($value) { 
    return $value['tag_id']; 
} 
$result = array_map('collapseTagIds', $array); 
+1

你们的答案都派上用场了,我为什么在我搬到现场服务器时无法正常工作而沮丧不已。在这里再次检查,你又救了我(PHP版本不同),所以只想说谢谢! – Danny 2010-08-19 18:14:25

3

嗯,你可以这样做:

$new_array = array(); 
foreach($array as $key => $value) 
{ 
    $new_array[$key] = $value['tag_id']; 
} 
print_r($new_array); 
+0

有关。 http://davidwalsh.name/flatten-nested-arrays-php – Incognito 2010-08-09 21:22:49

1

你的情况,你有$value只是一个索引。如果您不想指定索引名称,请执行以下操作:

$new_array = array(); 
foreach($array as $key => $value) { 
    $new_array[$key] = reset($value); 
} 
print_r($new_array); 
+1

我可以建议复位($值)对于初学者程序员来说不是立即可读和直观的。当然,它可以工作,但替代'$ value ['tag_id']'在这里可能更合适。 – 2012-10-17 23:25:02

+0

是的,你是对的。但使用它,初学者将(或应该)阅读手册或更多地了解它。增加知识。是我的观点。谢谢.. – 2012-10-19 18:45:36