>  기사  >  PHP 프레임워크  >  ThinkPHP 어레이 교체에 대한 종합 분석

ThinkPHP 어레이 교체에 대한 종합 분석

PHPz
PHPz원래의
2023-04-21 11:22:31752검색

배열 조작은 PHP 프로그램을 작성할 때 일반적인 작업입니다. ThinkPHP 프로젝트에서는 배열의 모든 빈 문자열('')을 null로 바꾸는 등 배열의 특정 값을 대체해야 하는 경우가 많습니다. 이 글에서는 ThinkPHP의 다양한 어레이 교체 방법을 소개합니다.

1. 일반 어레이 교체

먼저 일반 어레이 교체 방법을 살펴보겠습니다. 4개의 요소를 포함하는 $arr 배열이 있다고 가정합니다.

$arr = array(

'name' => '张三',
'age' => 18,
'email' => 'zhangsan@example.com',
'gender' => '男',

);

배열의 모든 빈 문자열을 null로 바꾸려면 foreach를 사용하여 배열을 반복할 수 있습니다. , 모든 요소를 ​​교체하십시오. 코드는 다음과 같습니다.

foreach ($arr as &$value) {

if ($value === '') {
    $value = null;
}

}

그 중 &$value는 배열 요소에 대한 참조를 나타내므로 원본 배열을 직접 수정할 수 있습니다. 위 코드를 실행하면 $arr 값은 다음과 같습니다.

array(

'name' => '张三',
'age' => 18,
'email' => 'zhangsan@example.com',
'gender' => '男',

);

지정된 키 이름의 값을 바꾸려면 루프에 조건부 판단을 추가하면 됩니다.

foreach ($ arr as $key => &$value) {

if ($key === 'email' && $value === 'zhangsan@example.com') {
    $value = 'lisi@example.com';
}

}

위 코드에서는 이메일 키 이름의 값, 즉 'zhangsan@example'로 대체했습니다. .com'을 'lisi@example.com''으로 실행하면 $arr의 값은 다음과 같습니다.

array(

'name' => '张三',
'age' => 18,
'email' => 'lisi@example.com',
'gender' => '男',

);

그러나 이 방법은 배열이 클 경우 단점이 있습니다. , 순회 및 교체에 루프를 사용하는 효율성은 매우 낮습니다. 그래서 우리는 보다 효율적인 교체 방법을 찾아야 합니다.

2. 재귀 배열 교체

다차원 배열의 모든 빈 문자열을 null로 바꿔야 하는 경우 루프를 사용하는 것만으로는 더 이상 충분하지 않습니다. 이때 재귀적 방법을 사용하여 전체 배열을 순회하고 교체할 가장 기본적인 요소를 찾을 때까지 각 하위 배열에서 재귀적으로 수행할 수 있습니다.

코드는 다음과 같습니다.

function array_replace_recursive_null($arr) {

foreach ($arr as $key => &$value) {
    if (is_array($value)) {
        $value = array_replace_recursive_null($value);
    } elseif ($value === '') {
        $value = null;
    }
}
return $arr;

}

위 코드에서는 먼저 현재 요소가 배열인지 확인하고 그렇다면 array_replace_recursive_null() 함수를 재귀적으로 호출합니다. 그렇지 않은 경우 현재 요소가 빈 문자열인지 확인하고 그렇다면 null로 바꿉니다.

이 함수를 사용하여 배열을 교체하면 코드는 다음과 같습니다.

$arr = array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => '',
    'address' => array(
        'province' => '广东省',
        'city' => '',
        'district' => '番禺区',
    ),
),

);
$arr = array_replace_recursive_null($arr);

위 코드를 실행하면 $arr은 다음과 같습니다.

array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => null,
    'address' => array(
        'province' => '广东省',
        'city' => null,
        'district' => '番禺区',
    ),
),

);

재귀 배열 교체는 전체 다차원 배열 교체에 적합하지만 단일 값 교체에는 여전히 루프 순회를 사용해야 합니다.

3. array_map() 함수를 사용하여 교체

PHP의 array_map() 함수는 지정된 콜백 함수를 배열의 각 요소에 적용하고 새 배열을 반환할 수 있습니다. 이 함수를 사용하여 배열의 값을 바꿀 수 있습니다.

다음 데이터를 포함하는 배열이 있다고 가정합니다:

$arr = array('apple', 'orange', 'banana', '');

빈 문자열을 null로 바꾸려면 다음을 사용할 수 있습니다. 이를 달성하기 위한 array_map() 함수와 콜백 함수.

코드는 다음과 같습니다.

function replacement_null($value) {

return $value === '' ? null : $value;

}
$arr = array_map('replace_null', $arr);

코드에서는 replacement_null() 콜백 함수를 작성했습니다. $ 값이 빈 문자열이면 null이 반환되고, 그렇지 않으면 $value가 반환됩니다. 그런 다음 이 함수는 array_map() 함수에 콜백 함수로 전달되어 배열의 값 교체를 완료합니다.

4. array_walk_recursive() 함수를 사용하여 대체

array_walk_recursive() 함수는 배열이나 객체의 각 요소에 사용자 정의 함수를 재귀적으로 적용하는 데 사용됩니다. array_map()과 비슷하지만 다차원 배열을 재귀적으로 순회할 수 있습니다. 이 함수를 사용하여 다차원 배열의 모든 값을 바꿀 수 있습니다.

빈 문자열을 포함하는 다차원 배열 $arr이 있다고 가정합니다.

$arr = array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => '',
    'address' => array(
        'province' => '广东省',
        'city' => '',
        'district' => '番禺区',
    ),
),

);

이제, 그 안에 있는 모든 빈 문자열을 null로 바꾸려고 합니다. 이는 array_walk_recursive() 함수와 콜백 함수를 사용하여 달성할 수 있습니다.

코드는 다음과 같습니다.

function replacement_null_recursive(&$value, $key) {

if ($value === '') {
    $value = null;
}

}
array_walk_recursive($arr, 'replace_null_recursive');

코드에서 replacement_null_recursive() 콜백 함수를 작성했습니다. , $value가 빈 문자열인 경우 null로 바꾸고 이 함수를 array_walk_recursive() 함수에 콜백 함수로 전달합니다.

위 코드를 실행하면 $arr의 값은 다음과 같습니다.

array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => null,
    'address' => array(
        'province' => '广东省',
        'city' => null,
        'district' => '番禺区',
    ),
),

);

5. 요약

이 글에서는 일반적인 방법을 포함하여 ThinkPHP 프로젝트에서 배열을 교체하는 다양한 방법을 소개합니다. 배열 교체, 재귀적 배열 교체, array_map() 함수를 사용한 교체, array_walk_recursive() 함수를 사용한 교체. 각 방법에는 적용 가능한 시나리오가 있으며, 실제 상황에 따라 가장 적절한 방법을 선택하면 시간과 에너지를 절약할 수 있습니다.

마지막으로, 이 기사가 독자들에게 도움이 되고 어레이 교체를 처리할 때 작업을 보다 효율적으로 완료할 수 있기를 바랍니다.

위 내용은 ThinkPHP 어레이 교체에 대한 종합 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.