[PHP] 다차원 연상 배열의 특정 요소의 합계를 구한다

개요


다차원 연상 배열의 특정 요소의 합계값을 구하는 샘플 코드
예를 들어 다음과 같은 다차원 연상 배열로 price의 합계를 구하는 경우
$vegetables = [
    ['name' => 'パセリ', 'price' => 100],
    ['name' => 'セロリ', 'price' => 200],
    ['name' => 'アブラナ', 'price' => 150]
];

코드


<?php

// PHP5.4未満だと配列の短縮構文が使えないため、従来の書き方にしておく(※内容は概要欄のものに同じ)
$vegetables = array(
    array('name' => 'パセリ', 'price' => 100),
    array('name' => 'セロリ', 'price' => 200),
    array('name' => 'アブラナ', 'price' => 150)
);

echo "PHPのバージョンは" . phpversion() . "です\n";

$priceTotal = 0;
// PHP5.5以上か未満かで求め方が異なる
if (phpversion() >= 5.5) {
    echo "phpバージョン5.5以上の処理を実行します\n";
    $priceTotal = array_sum(array_column($vegetables, 'price'));
} else {
    echo "phpバージョン5.5未満の処理を実行します\n";
    foreach ($vegetables as $vegetable) {
        $priceTotal += $vegetable['price'];
    }
}

echo "期待値: 450\n";
echo "結果: ${priceTotal}\n";

주안점


PHP5.5 이상의 경우


array_sum 함수와aray조합column 함수
 $priceTotal = array_sum(array_column($vegetables, 'price'));

PHP5.5시 미만


array_column 함수를 사용할 수 없기 때문에 순환문으로 보충합니다
※PHP5.5 이상 사용 가능
foreach ($vegetables as $vegetable) {
    $priceTotal += $vegetable['price'];
}

끝맺다


array_sum 함수와araycolumn 함수를 사용하는 문법은 행수를 줄일 수 있고 직감적으로도 이해하기 쉽다
PHP5가5도 안 되는 환경에서 개발과 향후 업그레이드 가능성이 있다면 리뷰 출력과 함께 쓰는 것이 좋다

참고 자료

  • 다차원 연상 배열의 수치의 합계를 산출하다
  • array_sum | php.net
  • array_column | php.net
  • 배열|php.net
  • phpversion | php.net
  • 좋은 웹페이지 즐겨찾기