2013-05-23 37 views
55

Tôi là người mới sử dụng PHP và tôi cần giải pháp nhanh cho vấn đề sau nhưng dường như không thể giải quyết được vấn đề sau:Dữ liệu mã hóa từ mảng đa chiều

Tôi có mảng đa chiều như vậy

Array 
(
    [0] => Array 
     (
      [blogTags_id] => 1 
      [tag_name] => google 
      [inserted_on] => 2013-05-22 09:51:34 
      [inserted_by] => 2 
     ) 

    [1] => Array 
     (
      [blogTags_id] => 2 
      [tag_name] => technology 
      [inserted_on] => 2013-05-22 09:51:34 
      [inserted_by] => 2 
     ) 
) 

tôi muốn sử dụng implode() để bằng cách nào đó trả về một chuỗi chứa giá trị bằng dấu phẩy của tag_name quan trọng như vậy.

google, technology 

Có thể đạt được hiệu ứng này với chức năng đã nói không? Nếu không, vui lòng đề xuất giải pháp thay thế.

Trả lời

119

Khá đơn giản:

$input = array(
    array(
    'tag_name' => 'google' 
), 
    array(
    'tag_name' => 'technology' 
) 
); 

echo implode(', ', array_map(function ($entry) { 
    return $entry['tag_name']; 
}, $input)); 

http://3v4l.org/ltBZ0


và mới trong php v5.5.0, array_column:

echo implode(', ', array_column($input, 'tag_name')); 
+4

Lưu ý rằng các đóng cửa chỉ được hỗ trợ với PHP 5.3 trở lên. –

+1

Giải pháp cho> = 5.5.0 là hoàn hảo! –

+0

Đi bộ với> 5.5 ... :) –

8
join(',', array_map(function (array $tag) { return $tag['tag_name']; }, $array)) 
8

array_map là lời kêu gọi trở lại chức năng, nơi bạn có thể chơi với mảng đã qua. điều này sẽ hoạt động.

$str = implode(',', array_map(function($el){ return $el['tag_id']; }, $arr)); 
4

rất đơn giản đi cho điều này

$str; 
foreach ($arrays as $arr) { 
$str .= $arr["tag_name"] . ","; 
} 
$str = trim($str, ',');//removes the final comma 
1

Nếu bạn muốn "TAG_NAME" với liên "blogTags_id" sử dụng: (PHP> 5,5)

$blogDatas = array_column($your_multi_dim_array, 'tag_name', 'blogTags_id'); 
echo implode(', ', array_map(function ($k, $v) { return "$k: $v"; }, array_keys($blogDatas), array_values($blogDatas))); 
2

Mặc dù câu hỏi này có liên quan đến chuỗi chuyển đổi, tôi stumbled khi điều này trong khi muốn một cách dễ dàng để viết mảng vào các tập tin đăng nhập của tôi. Nếu bạn chỉ muốn thông tin và không quan tâm đến độ sạch chính xác của chuỗi mà bạn có thể xem xét:

json_encode($array) 
0

Trong trường hợp này implode ($ array, ','); sẽ hoạt động, bởi vì bạn chỉ muốn các giá trị. Trong PHP 5.6 làm việc cho tôi.

Nếu bạn muốn nổ tung các phím và các giá trị trong một mặt hàng như:
blogTags_id: 1
TAG_NAME: google

$toImplode=array(); 
foreach($array as $key => $value) { 
$toImplode[]= "$key: $value".'<br>'; 
} 
$imploded=implode('',$toImplode); 

Xin lỗi, tôi hiểu sai, becasue danh hiệu "nổ tung dữ liệu từ một đa mảng ba chiều ". Vâng, câu trả lời của tôi vẫn trả lời nó bằng cách nào đó, có thể giúp một ai đó, vì vậy sẽ không xóa nó.

Các vấn đề liên quan