2016-08-12 80 views
-1
Array 
(
    [0] => Array 
     (
      [id] => 1 
      [sht] => L 
      [tm] => tttt 
     ) 

    [1] => Array 
     (
      [id] => 7 
      [tm] => xyz 
     ) 

    [2] => Array 
     (
      [id] => 12 
      [hand] => R 
     ) 

    [3] => Array 
     (
      [id] => 20 
     ) 

) 

我想帶和獨立的所有ID到一個數組像下面怎麼可能,我可以盡請建議我試過,但沒有工作多維數組

我使用foreach循環

foreach($results as $value){ 
    while(list($key,$value) = each($results)){ 
    echo $value 
    } 

} 
試過
+0

相同的索引將在PHP數組過寫操作,這樣預期的結果是不possibleas你所示。索引必須更改 –

+1

請嘗試與array_column http://php.net/manual/en/function.array-column.php – sandipshirsale

+1

@安南,你是正確的 – sandipshirsale

回答

1

您正在尋找array_column(),它返回來自輸入的單個列的值,由column_key標識。

$ids=array_column($results,"id"); 
print_r($ids); 

$ids將是僅由ID的一維陣列。

參考:http://php.net/manual/en/function.array-column.php


雖然你不能有數組中的相同關鍵。上面的結果可能會是這樣的,

Array 
(
    [0] => 1 
    [1] => 7 
    [2] => 12 
    [3] => 20 
) 

只包含您可以迭代的ID的數組。

array_column() is supported in PHP version greater than 5.3

+0

對於這個工作,雖然你必須有比5.3更高版本的PHP - 如果有的話,那麼這是一個很好的清潔解決方案 – RamRaider

+0

這是真的,謝謝你提到它。 :)更新了答案。 –

+0

我覺得'foreach()'是一個簡單的解決方案,因爲版本不是一個問題。 BTY以上答案也是正確的。 –

0

你想得到一個單維數組包含所有的ID?如果是這樣,你可以使用此功能array_column()

試試這個:

$array = array(
    array(
     'id' => 1, 
     'sht' => 'L', 
     'tm' => 'tttt' 
    ), 
    array(
     'id' => 7, 
     'tm' => 'xyz' 
    ), 
    array(
     'id' => 12, 
     'hand' => 'R' 
    ), 
    array(
    'id' => 20 
    ) 
); 

$id = array_column($array, "id"); 

結果:

Array 
(
    [0] => 1 
    [1] => 7 
    [2] => 12 
    [3] => 20 
) 
+0

正確@Ob機器人 – James

+0

(PHP 5> = 5.5.0,PHP 7) –

0

在這個例子中輸出你在陣列中重複鍵 - 這是不行的。下面的更多或更少,則你是什麼之後,使用array_walk_recursive功能

$src=array(
    array('id'=>1,'sht'=>'L','tm'=>'tttt'), 
    array('id'=>7,'tm'=>'xyz'), 
    array('id'=>12,'hand'=>'R'), 
    array('id'=>20), 
); 
$out=array(); 

function get($item,$key,$find){ 
    global $out; 
    if($key==$find)$out[$key][]=$item; 
} 

array_walk_recursive($src,'get','id'); 
array_walk_recursive($src,'get','tm'); 
array_walk_recursive($src,'get','sht'); 

echo '<pre>',print_r($out,true),'</pre>'; 
+0

工作在php5到php7。 BTY正確的解決方案 –

+0

奇怪 - 根據手冊'(PHP 5> = 5.5.0,PHP 7)'我有PHP 5.3。2在win7上並沒有'array_column'功能〜我希望有時有:( – RamRaider

+0

我要檢查,如果真的很奇怪 –

0

解決辦法:

// $arr is your initial array 
$grouped = []; 
array_walk_recursive($arr, function($v, $k) use(&$grouped){ 
    (isset($grouped[$k]))? $grouped[$k][] = $v : $grouped[$k] = [$v]; 
}); 

print_r($grouped); 

DEMO link

+0

在php5中工作到php7。 BTY正確溶液 –

+0

$ ARR =陣列 ( H =>數組 ( 'ID'=> 1, 'SHT'=> 'L', 'TM'=> 'TTTT', ) 小號=>數組 ( 'ID'=> 7, 'TM'=> 'XYZ' ) F =>數組 ( 「身份證'=> 12, '手'=> 'R' ) G =>數組 ( 'ID'=> 20 ) ); 陣列 ( [ID] =>數組 ( [H] => 1 [S] => 7 [F] => 12 [G] => 20 )...... 怎麼可能 – James

+0

@詹姆斯,你已經接受了AlokPatel答案。你現在想要什麼? – RomanPerekhrest