다차원 배열에서 단일 열 반환


79

저는 PHP 초보자이고 다음 문제에 대한 빠른 해결책이 필요하지만 하나를 찾을 수 없습니다.

나는 다차원 배열을 가지고 있습니다.

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
        )
)

를 사용하여 implode()어떻게 든 tag_name키 값을 포함하는 쉼표로 구분 된 문자열을 반환하고 싶습니다.

google, technology

상기 기능으로이 효과를 얻을 수 있습니까? 그렇지 않은 경우 대체 솔루션을 제안하십시오.

답변:


183

아주 간단합니다.

$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


그리고 php v5.5.0의 새로운 기능 array_column:

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

4
클로저는 PHP 5.3 이상에서만 지원됩니다.
Léo Lam

2
> = 5.5.0에 대한 솔루션은 완벽합니다!
Key-Six

:) ...> 5.5 멀리 걷기
이씨 쿠마 Sahu

13

이 질문은 문자열 변환과 관련이 있지만 로그 파일에 배열을 작성하는 쉬운 방법을 원하면서 이것을 우연히 발견했습니다. 정보 만 원하고 문자열의 정확한 청결도에 신경 쓰지 않는다면 다음을 고려할 수 있습니다.

json_encode($array)

나는 그것이 해킹처럼 보이지만 매력처럼 작동한다는 것을 알고 있습니다 (여기에서는 PHP 5.4). ;)
Paulo Bueno

1
@PauloBueno 2020에서 정말 PPH 5.4를 사용해서는 안됩니다!
Martin

9

array_map전달 된 배열로 재생할 수있는 콜백 함수입니다. 작동합니다.

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

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

5

아주 간단하게

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

3

연관된 "blogTags_id"와 함께 "tag_name"을 사용하려면 다음을 사용하십시오. (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)));

1

이 상황에서 implode ($ array, ','); 값만 원하기 때문에 작동합니다. 나를 위해 일하는 PHP 5.6에서.

다음과 같이 키와 값을
내포하려면 blogTags_id : 1
tag_name : google

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

죄송합니다. 제목이 "다차원 배열의 데이터 삽입"이므로 잘못 이해했습니다. 글쎄, 내 대답은 여전히 ​​어떻게 든 대답하고 누군가를 도울 수 있으므로 삭제하지 않을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.