php의 arayphp로 맵 설치하기
오늘은 PHP의 Aray입니다.PHP로 맵을 설치해보세요!
array_map의 동작 규격은 공식 참조와 같다!
C 언어에서 PHParray_map의 정의는 엄격하게 실시하려고 했는데 이번에는 언급하지 않겠습니다.
저차원맵 설치하기
조금씩 본래의 방법에 접근하는 형식으로 실현하다.
callback 함수에서 허용하는 값은value뿐입니다
기본적
<?php
function getNextValue(&$array){
$value = current($array);
next($array);
return $value;
}
function isEndValue($array, $value){
end($array);
return current($array) === $value;
}
function __array_map($callback, $array) {
$result = [];
$value = getNextValue($array);
$result[] = $callback($value);
if (!isEndValue($array, $value)) {
$result = array_merge($result, __array_map($callback, $array));
}
return $result;
}
$array = [
"key1" => "value1",
"key2" => "value2",
"key3" => "value3",
];
$callback = function($value){
return $value . " Hello!";
};
$result = __array_map($callback, $array);
print_r($result);
/*
[
"value1 Hello!",
"value2 Hello!",
"value3 Hello!",
]
*/
저층 레이크를 설치하면 먼저 이렇게 될 것 같아.그러나 이 실시 방식이라면callable 함수에서 되돌아오는 값은 원래의 키를 유지할 수 없습니다.
원래 키의 설치를 유지하기 위해 수정
<?php
function getNextValue(&$array){
$value = current($array);
$cp_array = $array;
$key = array_flip($cp_array)[$value];
next($array);
return ["key" => $key, "value" => $value];
}
function isEndValue($array, $value){
end($array);
return current($array) === $value;
}
function __array_map($callback, $array) {
$result = [];
$next = getNextValue($array);
$key = $next["key"];
$value = $next["value"];
$result[$key] = $callback($value);
if (!isEndValue($array, $value)) {
$result = array_merge($result, __array_map($callback, $array));
}
return $result;
}
$array = [
"key1" => "value1",
"key2" => "value2",
"key3" => "value3",
];
$callback = function($value){
return $value . " Hello!";
};
$result = __array_map($callback, $array);
print_r($result);
/*
[
"key1" => "value1 Hello!",
"key2" => "value2 Hello!",
"key3" => "value3 Hello!",
]
*/
기본적으로 참고 교부 후current지침에서value를 얻을 때 키를 추출하면 문제가 없다고 생각합니다.function getNextValue(&$array){
$value = current($array);
$cp_array = $array;
$key = array_flip($cp_array)[$value];
next($array);
return ["key" => $key, "value" => $value];
}
주의사항 참조$array
array_flip
에서 키,value를 반전시킬 때$array
array_flip
array_flip
그리고 배열된 사이즈는 당연히 가변적이기 때문에 전체 스캐닝을 피해야 한다.
이런 의도로 깊이 있게 복제하다.
그러나 이렇게 되면 콜백 함수는 키를 스캔할 수 없습니다.
그럼 원래
array_map
규격에 가깝죠.콜백 함수로 키를 스캔하기 위해 수정을 시도해 봅니다
이 점에 순조롭게 접근할 수 있다면, 한 가지 더!
<?php
function getNextValue(&$array){
$value = current($array);
$cp_array = $array;
$key = array_flip($cp_array)[$value];
next($array);
return ["key" => $key, "value" => $value];
}
function isEndValue($array, $value){
end($array);
return current($array) === $value;
}
function __array_map($callback, $array) {
$result = [];
$next = getNextValue($array);
$key = $next["key"];
$value = $next["value"];
$result[$key] = $callback($value, $key);
if (!isEndValue($array, $value)) {
$result = array_merge($result, __array_map($callback, $array));
}
return $result;
}
$array = [
"key1" => "value1",
"key2" => "value2",
"key3" => "value3",
];
$callback = function($value, $key){
return $value . " " . $key;
};
$result = __array_map($callback, $array);
print_r($result);
/*
[
"key1" => "value1 key1",
"key2" => "value2 key2",
"key3" => "value3 key3",
]
*/
PHPcall先に明示されている引数の個数 < call元に明示されている引数の個数
상기 사건에서 처리되지 않음Warning
$result[$key] = $callback($value, $key);
이렇게 injection$key
하면 간단하게 실현할 수 있습니다.$callback = function($value, $key){
return $value . " " . $key;
};
따라서 콜백 함수 측면에서 실시해도$callback = function($value){
return $value . " Hello!";
};
처럼 설치하더라도 예상대로 작동합니다.그리고
array_map
에 분배된 첫 번째 인자의Callable 함수에서스캔한value를 반환하기 위해 합리적인 설치를 실현한 것 같습니다.
또한 콜백 함수는 콜의 방법으로 가변 함수를 사용했다
call_user_func_array
를 사용해도 같은 설치를 할 수 있을 것 같습니다.총결산
웹 영역보다는 로우엔드 영역을 선호합니다.
어쨌든 무의식적인 실복에서 저층을 떠올리면서 뇌 단련을 해요.
2021년도 잘 부탁드립니다!
Reference
이 문제에 관하여(php의 arayphp로 맵 설치하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/huuya/articles/e8fdefd948602f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)