홈>
다음과 같은 배열이 있습니다.
$array = [
["444", "0081"],
["449", "0081"],
["451", "0081"],
["455", "2100"],
["469", "2100"]
];
다음과 같은 새로운 배열로 그룹화해야합니다 :
array (
0 =>
array (
0 => '444,449,451',
1 => '0081',
),
1 =>
array (
0 => '455,469',
1 => '2100',
),
)
많은 스크립트를 시도했지만 성공하지 못했습니다.
function _group_by($array, $key) {
$return = array();
foreach($array as $val) {
$return[$val[$key]][] = $val;
}
return $return;
}
$newArray = _group_by($array, 1); // (NO SUCCESS)
- 답변 # 1
- 답변 # 2
두 개의 루프를 작성하는 것은이 작업에 너무 많은 노력입니다.
isset()
사용 반복 할 때 출력 배열에 임시 키가 적용됩니다. 데이터 그룹화가 완료되면array_values()
를 사용하여 출력을 다시 색인화하십시오. .코드 (데모)
$array = [ ["444", "0081"], ["449", "0081"], ["451", "0081"], ["455", "2100"], ["469", "2100"] ]; foreach ($array as $row) { if (!isset($result[$row[1]])) { $result[$row[1]] = $row; // first occurrence of group, save whole row } else { $result[$row[1]][0] .= ',' . $row[0]; // not first occurrence, concat first element in group } } var_export(array_values($result));
출력 :
array ( 0 => array ( 0 => '444,449,451', 1 => '0081', ), 1 => array ( 0 => '455,469', 1 => '2100', ), )
관련 자료
- sql - 특정 열이있는 값의 MYSQL GROUP BY 쌍
- python - 행 및 열 값을 사용하여 데이터 프레임에 데이터 추가
- python - 판다 - 새 열 데이터를 기반으로 열 값을 찾는 방법
- python - 길이가 다른 다른 데이터 프레임의 값을 기반으로 기존 데이터 프레임에 새 열을 만드는 방법
- python 3.x - pandas df에서 삭제하지 않고 하나의 열을 제외하고 pandas의 열 값을 바꿉니다
- mysql - 그룹에 모든 값이있는 경우 SQL group_by 및 group_concat
- python - df1의 열 값을 기반으로 df2의 교차 값을 조회하고 df1에서 검색된 값으로 새 열을 만듭니다 (일치하지 않는 열 이름)
- python - 값을 계산하고 새 열에 추가하기 위해 데이터 프레임에서 행 반복
- python - DataFrame 열의 값을 반복하고 조건이 충족되면 해당 값을 업데이트합니다
- Excel 값을 읽고 PowerShell의 열 이름에서 변수 만들기
- python - 값이있는 데이터 형식 Int64의 열을 nan 값이있는 개체로 변환
- awk - 일치하는 ID와 헤더를 위해 2 파일의 열 값 분할
- dataframe - r의 열 값을 병합 할 때 더 높은 (최대) 값을 선택하는 방법
- r - 다른 데이터 프레임을 기반으로 다른 열의 NA 값 병합 및 채우기
- dataframe - R에 열별로 그룹을 포함하도록 요약
- sql - 두 개의 이름 열을 기준으로 두 열 값 합계
- r - 명명 된 벡터를 기반으로 열 값 대체
- excel - 열에서 두 값 사이의 모든 값을 검색하고 마지막 값을 찾을 때까지 반복
- python - Pandas DataFrame을 한 열로 그룹화하고 다른 열을 병합하는 방법은 무엇입니까?
- python - 목록의 값을 사용하여 팬더 열 채우기
관련 질문
- php : 하나의 열에 대한 그룹 배열 데이터 및 다른 열에서 합계 데이터
- php : 다차원 배열의 중첩 배열의 배열 키를 정수에서 알파벳으로 변경
- PHP는 다차원 배열에서 키를 제거하는 방법?
- PHP의 다차원 배열-foreach를 사용하여 값을 추가하는 방법
- php : 다차원 배열을 행 데이터로 변환 하시겠습니까?
- PHP for 루프로 다차원 배열의 일부 값을 표시하는 방법
- 동일한 변수의 PHP array_diff_assoc
- PHP 그룹 및 합계 다차원 배열
- 날짜 밑의 어레이 배열을 정렬하는 방법 ... PHP-LALAVEL
- 다차원 배열의 PHP 누적 가치
보다 우아한 솔루션이 있어야하지만 내가 생각할 수있는 가장 간단한 솔루션은 이것입니다.
나는 이것을 테스트하지 않았지만 비슷한 것을 시도해야합니다. 이것은 단순히 주어진 배열을 거치고 구조화 된 방식으로 모든 항목을 수집합니다 (그래서$groups
변수는 키를 공유하는 각 그룹에 대한 배열 항목을 포함하며 키는 주어진 배열 내 각 항목의 두 번째 항목에 해당합니다). 거기에서 요청한 형식을 얻도록 재구성하는 것입니다.http://php.net/manual/en/control-structures.foreach.php