Array_Fill_Keys 함수는 주어진 배열에서 키가 나오는 새 배열을 생성하는 데 사용되며 각 키의 해당 값은 동일한 지정된 값입니다. 이 기능의 프로토 타입은 다음과 같습니다.
<span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">array_fill_keys</span></span><span> ( </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$keys</span></span><span> , </span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span> )
</span></span>
$ 키 : 키 이름이 포함 된 배열입니다.
$ 값 : 각 키에 해당하는 값 및 모든 키는이 값에 해당합니다.
예 :
<span><span><span class="hljs-variable">$keys</span></span><span> = [</span><span><span class="hljs-string">'apple'</span></span><span>, </span><span><span class="hljs-string">'banana'</span></span><span>, </span><span><span class="hljs-string">'cherry'</span></span><span>];
</span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill_keys</span></span><span>(</span><span><span class="hljs-variable">$keys</span></span><span>, </span><span><span class="hljs-variable">$value</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>
출력 :
<span><span>Array
(
[</span><span><span class="hljs-meta">apple</span></span><span>] => </span><span><span class="hljs-number">0</span></span><span>
[</span><span><span class="hljs-meta">banana</span></span><span>] => </span><span><span class="hljs-number">0</span></span><span>
[</span><span><span class="hljs-meta">cherry</span></span><span>] => </span><span><span class="hljs-number">0</span></span><span>
)
</span></span>
이 예제는 $ 키 어레이에서 배열의 키 이름을 가진 새 배열을 생성하고 각 키의 값은 0 입니다.
Array_Walk 함수는 배열을 가로 지르고 각 요소에 콜백 함수를 적용하는 데 사용됩니다. 프로토 타입은 다음과 같습니다.
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">array_walk</span></span><span> ( </span><span><span class="hljs-keyword">array</span></span><span> &</span><span><span class="hljs-variable">$array</span></span><span> , </span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$callback</span></span><span> [, </span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$userdata</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span> ] )
</span></span>
$ 배열 : 이것은 전달 된 배열입니다. 참조 유형이 전달되므로 원래 배열이 직접 수정됩니다.
$ 콜백 : 배열의 각 요소를 처리하는 콜백 함수.
$ userData : 선택 사항, 추가 매개 변수는 콜백 함수의 두 번째 매개 변수로 전달됩니다.
예 :
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-string">'apple'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'banana'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'cherry'</span></span><span> => </span><span><span class="hljs-number">4</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">array_walk</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, function (&</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>) {
</span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-variable">$value</span></span><span> * </span><span><span class="hljs-number">2</span></span><span>;
});
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>
출력 :
<span><span>Array
(
[</span><span><span class="hljs-meta">apple</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-meta">banana</span></span><span>] => </span><span><span class="hljs-number">6</span></span><span>
[</span><span><span class="hljs-meta">cherry</span></span><span>] => </span><span><span class="hljs-number">8</span></span><span>
)
</span></span>
이 예에서는 Array_walk가 배열의 각 요소를 반복하고 각 요소의 값에 2를 곱합니다.
실제 개발에서는 종종 이러한 값의 배치 처리 전에 고정 값으로 배열을 초기화해야합니다. array_fill_keys 와 array_walk를 결합 하여이 요구 사항을 달성 할 수 있습니다.
실제 사례 : 사용자의 주문 정보를 나타내는 배열이 있다고 가정합니다. 여기에는 사용자 ID와 그가 구매 한 품목의 수량이 포함되어 있습니다. 초기 값이 0 인 모든 사용자 ID를 포함하는 배열을 초기화 한 다음 (초기 구매 수량을 나타냅니다) Array_Walk를 통해 각 사용자의 구매 수량을 업데이트하려고합니다.
샘플 코드 :
<span><span><span class="hljs-comment">// 사용자ID목록</span></span><span>
</span><span><span class="hljs-variable">$user_ids</span></span><span> = [</span><span><span class="hljs-number">101</span></span><span>, </span><span><span class="hljs-number">102</span></span><span>, </span><span><span class="hljs-number">103</span></span><span>, </span><span><span class="hljs-number">104</span></span><span>];
</span><span><span class="hljs-comment">// 배열을 초기화하십시오,所有사용자的购买数量为0</span></span><span>
</span><span><span class="hljs-variable">$order_data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill_keys</span></span><span>(</span><span><span class="hljs-variable">$user_ids</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-comment">// 假设这是사용자购买商品的记录,每个数组项表示사용자ID구매 수량</span></span><span>
</span><span><span class="hljs-variable">$purchases</span></span><span> = [
[</span><span><span class="hljs-number">101</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>],
[</span><span><span class="hljs-number">102</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>],
[</span><span><span class="hljs-number">103</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>],
[</span><span><span class="hljs-number">101</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>],
[</span><span><span class="hljs-number">104</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>]
];
</span><span><span class="hljs-comment">// 사용 array_walk 처리 주문 데이터,更新사용자的购买数量</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$purchases</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$purchase</span></span><span>) {
</span><span><span class="hljs-variable">$user_id</span></span><span> = </span><span><span class="hljs-variable">$purchase</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>];
</span><span><span class="hljs-variable">$quantity</span></span><span> = </span><span><span class="hljs-variable">$purchase</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>];
</span><span><span class="hljs-comment">// 通过回调函数更新对应사용자的购买数量</span></span><span>
</span><span><span class="hljs-title function_ invoke__">array_walk</span></span><span>(</span><span><span class="hljs-variable">$order_data</span></span><span>, function (&</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>) </span><span><span class="hljs-keyword">use</span></span><span> ($</span><span><span class="hljs-title">user_id</span></span><span>, $</span><span><span class="hljs-title">quantity</span></span><span>) {
</span><span><span class="hljs-title">if</span></span><span> ($</span><span><span class="hljs-title">key</span></span><span> == $</span><span><span class="hljs-title">user_id</span></span><span>) {
$</span><span><span class="hljs-title">value</span></span><span> += $</span><span><span class="hljs-title">quantity</span></span><span>;
}
});
}
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$order_data</span></span><span>);
</span></span>
출력 :
<span><span>Array
(
[</span><span><span class="hljs-meta">101</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-meta">102</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
[</span><span><span class="hljs-meta">103</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-meta">104</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>
이 기사에서는 PHP에서 array_fill_keys 및 array_walk를 사용하는 방법을 자세히 소개합니다. Array_Fill_Keys를 통해 고정 키 이름을 가진 배열을 신속하게 만들고 각 키에 대해 동일한 초기 값을 지정할 수 있습니다. Array_walk를 통해 배열 및 배치 프로세스를 통해 배열의 각 요소를 반복 할 수 있습니다.
이 두 기능을 결합하여 데이터에 대한 작업을 매우 효율적으로 배치 할 수 있습니다. 특히 데이터를 초기화 및 업데이트 또는 처리 해야하는 시나리오에 적합합니다. 주문 데이터 처리와 같은 특정 비즈니스 시나리오를 인스턴스화함으로써 실제 프로젝트에서 이러한 기능이 어떻게 사용되는지 더 잘 이해하는 데 도움이 될 수 있습니다.
관련 태그:
array_walk