2010-08-09 73 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