아래 코드를 살펴보세요.
처리 전 arrTitle
과 arrHref
,
arrTitle
의 내용은 다음과 같습니다.
arrHref
내용은 다음과 같습니다.
<code class="php">//将title数组中首元素取出,作为栏目标题 foreach ($arrTitle as &$title) { $text [] = $title[0]; unset($title[0]); } //将href数组中首元素取出,作为栏目url foreach ($arrHref as &$href) { $url [] = $href[0]; unset($href[0]); } print_r($arrTitle); //重新组织title项 $title = array_combine($text, $url); print_r($arrTitle);die;</code>
위 PHP 코드를 실행하여 제목과 href의 각 항목의 첫 번째 요소를 추출하고 제거합니다. 그러나 array_combine
을 실행하기 전에 $arrTitle
은 다음과 같습니다.
그러나
을 실행하면 array_combine
은 다음과 같이 됩니다. $arrTitle
의 마지막 요소가 $arrTitle
의 결과가 되는데 array_combine()
함수가 array_combine()
를 수정하지 않는 이유는 무엇인가요? $arrTitle
처리 전
과 arrTitle
,arrHref
두 개의 배열이 있습니다.
의 내용은 다음과 같습니다. arrTitle
내용은 다음과 같습니다.arrHref
<code class="php">//将title数组中首元素取出,作为栏目标题 foreach ($arrTitle as &$title) { $text [] = $title[0]; unset($title[0]); } //将href数组中首元素取出,作为栏目url foreach ($arrHref as &$href) { $url [] = $href[0]; unset($href[0]); } print_r($arrTitle); //重新组织title项 $title = array_combine($text, $url); print_r($arrTitle);die;</code>
을 실행하기 전에 array_combine
은 다음과 같습니다.
$arrTitle
그러나
을 실행하고 나면은 다음과 같이 됩니다. array_combine
$arrTitle
의 마지막 요소가
의 결과가 되는데 $arrTitle
함수가 array_combine()
를 수정하지 않는 이유는 무엇인가요? array_combine()
$arrTitle
여기 $title은 위 루프의 $title과 이름이 동일합니다. 이름만 변경하세요. PHP에는 블록 범위가 없습니다.
<code>**$title** = array_combine($text, $url); </code>
이름 중복 문제를 지적해주신 @whyreal님께 감사드리며 해당 버그가 해결되었습니다.
foreach 루프에서는
을 사용하여 배열을 순회하므로 루프가 끝나면은 引用方式
의 마지막 요소 집합을 가리킵니다. $title
$arrTitle
PHP에는 블록 수준 범위가 없으므로 $title = array_combine($arr1, $arr2) 이후 $title은 자신이 가리키는
$arrTitle
이 버그를 해결하려면