PHP에서 데이터베이스 작업에 MySQLI 확장을 사용할 때는 종종 쿼리 결과를 추가로 처리해야합니다. mysqli_result 객체는 데이터베이스의 쿼리에서 반환 된 모든 데이터를 저장합니다. 일반적으로 특정 작업을 수행하려면 각 데이터 행을 통과해야합니다. 일반적인 방법은 루프를 통과하는 것이지만보다 간결한 방식을 사용하려면 PHP의 내장 Array_Map () 함수를 사용하여 각 데이터 행을 처리 할 수 있습니다.
Array_Map () 은 배열의 각 요소에 콜백 함수를 적용하여 새 배열을 반환 할 수있는 고차 기능입니다. 간단히 말해서, 콜백 함수를 통해 배열의 각 요소를 수정합니다.
기본 구문은 다음과 같습니다.
array_map(callable $callback, array $array, array ...$arrays): array
콜백은 우리가 적용하려는 콜백 함수입니다.
배열은 우리가 처리하려는 배열입니다.
다중 배열은 매개 변수로 허용 될 수 있지만 일반적으로 하나의 배열 만 전달합니다.
mysqli_result를 처리 할 때 먼저 배열로 변환해야합니다. mysqli_fetch_all () 함수를 통해 구현 될 수 있으며 쿼리 결과를 2 차원 배열로 변환합니다. 그런 다음 Array_Map ()을 사용하여 각 행을 처리 할 수 있습니다.
<?php
// 데이터베이스에 연결하십시오
$mysqli = new mysqli("localhost", "root", "password", "database_name");
// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 쿼리를 실행하십시오
$result = $mysqli->query("SELECT * FROM users");
// 쿼리 결과를 2 차원 배열로 변환하십시오
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
// 콜백 함수를 정의합니다,각 데이터 행을 처리하는 데 사용됩니다
function processRow($row) {
// 예를 들어,각 행의 데이터를 수정하십시오(여기에 예가 있습니다)
$row['email'] = str_replace('@old-domain.com', '@m66.net', $row['email']);
return $row;
}
// 사용 array_map 각 행의 배치 처리
$processedData = array_map('processRow', $data);
// 출력 처리 된 데이터
print_r($processedData);
// 데이터베이스 연결을 닫습니다
$mysqli->close();
?>
데이터베이스에 연결 : 먼저 New MySQLI ()를 통해 데이터베이스 연결을 설정합니다.
쿼리 실행 : mysqli-> query ()를 사용하여 쿼리 문을 실행하고 데이터베이스에서 mysqli_result를 가져옵니다.
쿼리 결과를 배열로 변환하십시오 : mysqli_fetch_all ()을 사용하여 쿼리 결과를 연관 배열 ( mysqli_assoc )으로 변환합니다.
콜백 함수 정의 : ProcessRow ()는 각 행의 데이터를 수정하는 사용자 정의 콜백 함수입니다. 예를 들어, 여기서는 str_replace ()를 통해 old-domain.com 에서 m66.net 으로 이메일 의 도메인 이름을 대체합니다.
배치 처리 : array_map () 함수를 통해 각 데이터 행의 배치 처리를하고 콜백 함수 프로세스 로로 전달하여 각 행을 처리합니다.
출력 처리 된 데이터 : 마지막으로 처리 된 데이터를 인쇄합니다.
array_map ()는 더 깨끗한 구문을 가지고 코드를보다 작고 명확하게 할 수 있도록 Data Line으로 데이터 라인을 처리하기 위해 Foreach Loops를 사용하는 것과 비교할 때. 특히보다 복잡한 작업을 처리 할 때는 Array_Map ()을 사용하면 코드가보다 기능적인 프로그래밍 스타일을 보이게 할 수 있습니다.
Array_Map ()는 새 배열을 반환하고 원래 배열을 수정하지 않습니다. 따라서 원래 데이터를 유지 해야하는 경우 리턴 값을 다른 변수에 저장할 수 있습니다.
mysqli_fetch_all ()는 2 차원 배열을 반환하므로 Array_Map () 에서 직접 처리 할 수 있습니다. 단일 열만 처리 해야하는 경우 Array_Column () 과 같은 다른 기능을 사용하여 먼저 열을 추출한 다음 처리 할 수 있습니다.
Array_Map () 함수를 사용하면 mysqli_result 쿼리 결과의 각 행을 간결하고 효율적으로 처리 할 수 있습니다. 전통적인 foreach 루프보다 간단하며 데이터 처리의 의도를 명확하게 표현할 수 있습니다. 이 방법이 데이터베이스 쿼리 결과에서 데이터를 더 잘 처리하는 데 도움이되기를 바랍니다.