2012-05-01 12 views
2

このような配列を分解することは可能ですか?多次元配列からの列をカンマ区切り文字列に変換するにはどうすればよいですか?

$arr=array(); 
$arr[0]['id']='123'; 
$arr[0]['otherdatas']= 
$arr[1]['id']='234'; 
$arr[1]['otherdatas']= 
$arr[2]['id']='567'; 
echo "string: ".explode($arr[]['id'],','); 

これで終わりますか?

に上記の結果を行う
string: 123,234,567 

Fatal error: Cannot use [] for reading in /data/www/test.php on line 8

どのように私は何かなどを行うことなく、このついて行くことができます...

function getIDs(){ 
    foreach($arr as $val){ 
     if($string){$string.=',';} 
     $string.=$arr['id']; 
    } 
    return $string; 
} 

はこれについて行くためにいくつかのより良い方法はありますか?

答えて

7

まず第一に、あなたはexplodeではなく、implodeの文字列にしようとしています。第二に、いいえ、操作を表現するシンタックスのショートカットはありません。"すべてのサブアレイのすべてのidキーを一緒に参加させよう"。しかし、このように非常に簡潔にすることができます:

echo join(',', array_map(function ($i) { return $i['id']; }, $arr)); 
+0

簡潔。 @Steve、この例のような匿名関数はPHP 5.3+でしか動作しないことを覚えておいてください – Nadh

+0

ahhなので、それは動作しません; P –

+0

PHP 5.2-: 'join '、array_map(create_function() '$ i'、 'return $ i ["id"];')、$ arr)) '。 – deceze

0

いいえ、それは不可能です。

function myExplode ($data=array(),$row='id',$delimiter=','){ 
    $result=''; 
    foreach ($data as $item) $result.=($data[$row])?$delimiter.$data[$row]:''; 
    return $result; 
} 
1
PHP5.5から

とアップ、あなたの多次元配列内のデータの単一の列を分離するarray_column()を呼び出すことができます。

コード:(Demo

$arr=array(); 
$arr[0]['id']='123'; 
$arr[0]['otherdatas']=''; 
$arr[1]['id']='234'; 
$arr[1]['otherdatas']=''; 
$arr[2]['id']='567'; 

echo implode(',',array_column($arr,'id')); 

出力:

123,234,567 
関連する問題