PHP에서 배열 값의 공백을 자르는 방법
다음과 같은 배열이 있습니다
$fruit = array(' apple ','banana ', ' , ', ' cranberry ');
양쪽에 공백이없는 값을 포함하는 배열을 원하지만 PHP 에서이 작업을 수행하는 방법에 빈 값이 포함될 수 있습니다. 출력 배열은 다음과 같아야합니다
$fruit = array('apple','banana', ',', 'cranberry');
array_map 및 trim 은 작업을 수행 할 수 있습니다.
$trimmed_array = array_map('trim', $fruit);
print_r($trimmed_array);
array_walk()
trim()
배열을 다듬기 위해 사용할 수 있습니다
<?php
function trim_value(&$value)
{
$value = trim($value);
}
$fruit = array('apple','banana ', ' cranberry ');
var_dump($fruit);
array_walk($fruit, 'trim_value');
var_dump($fruit);
?>
http://www.php.net/manual/en/function.trim.php의 두 번째 예를 참조하십시오.
배열이 다차원 인 경우 다음과 같이 작동합니다.
//trims empty spaces in array elements (recursively trim multidimesional arrays)
function trimData($data){
if($data == null)
return null;
if(is_array($data)){
return array_map('trimData', $data);
}else return trim($data);
}
하나의 샘플 테스트는 다음과 같습니다.
$arr=[" aaa ", " b ", "m ", [" .e ", " 12 3", "9 0 0 0 "]];
print_r(trimData($arr));
//RESULT
//Array ( [0] => aaa [1] => b [2] => m [3] => Array ( [0] => .e [1] => 12 3 [2] => 9 0 0 0 ) )
1 차원 배열 또는 다차원 배열의 가장 깊은 차원 을 자르고 인쇄 하려면 다음을 사용해야합니다.
foreach($array as $key => $value)
{
$array[$key] = trim($value);
print("-");
print($array[$key]);
print("-");
print("<br>");
}
1 차원 배열이나 다차원 배열의 가장 깊은 차원 을 자르고 싶지 는 않으려면 다음을 사용해야합니다.
$array = array_map('trim', $array);
다차원 증거 솔루션 :
array_walk_recursive($array, function(&$arrValue, $arrKey){ $arrValue = trim($arrValue);});
$fruit= array_map('trim', $fruit);
다차원 배열을 사용할 때 기존 답변에 문제가있었습니다. 이 솔루션은 저에게 효과적입니다.
if (is_array($array)) {
foreach ($array as $key => $val) {
$array[$key] = trim($val);
}
}
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
function generateRandomSpaces() {
$output = '';
$i = rand(1, 10);
for ($j = 0; $j <= $i; $j++) {
$output .= " ";
}
return $output;
}
// Generating an array to test
$array = [];
for ($i = 0; $i <= 1000; $i++) {
$array[] = generateRandomSpaces() . generateRandomString(10) . generateRandomSpaces();
}
// ARRAY MAP
$start = microtime(true);
for ($i = 0; $i < 100000; $i++) {
$trimmed_array=array_map('trim',$array);
}
$time = (microtime(true) - $start);
echo "Array map: " . $time . " seconds\n";
// ARRAY WALK
$start = microtime(true);
for ($i = 0; $i < 100000; $i++) {
array_walk($array, 'trim');
}
$time = (microtime(true) - $start);
echo "Array walk : " . $time . " seconds\n";
// FOREACH
$start = microtime(true);
for ($i = 0; $i < 100000; $i++) {
foreach ($array as $index => $elem) {
$array[$index] = trim($elem);
}
}
$time = (microtime(true) - $start);
echo "Foreach: " . $time . " seconds\n";
// FOR
$start = microtime(true);
for ($i = 0; $i < 100000; $i++) {
for ($j = 0; $j < count($array) - 1; $j++) {
$array[$j] = trim($array[$j]);
}
}
$time = (microtime(true) - $start);
echo "For: " . $time . " seconds\n";
위 코드의 결과는 다음과 같습니다.
어레이 맵 : 8.6775720119476 초
어레이 워크 : 10.423238992691 초
Foreach : 7.3502039909363 초
For : 9.8266389369965 초
물론이 값은 변경 될 수 있지만 foreach가 최선의 선택이라고 말하고 싶습니다.
array_map('trim', $data)
모든 하위 배열을로 변환합니다 null
. 문자열에 대해서만 공백을 자르고 다른 유형을 그대로 두어야 할 경우 다음을 사용할 수 있습니다.
$data = array_map(
function ($item) {
return is_string($item) ? trim($item) : $item;
},
$data
);
값이 NULL 인 경우 array_map 변경 유형의 트림.
더 좋은 방법 :
$result = array_map(function($v){
return is_string($v)?trim($v):$v;
}, $array);
function trimArray(&$value)
{
$value = trim($value);
}
$pmcArray = array('php ','mysql ', ' code ');
array_walk($pmcArray, 'trimArray');
참고URL : https://stackoverflow.com/questions/5762439/how-to-trim-white-spaces-of-array-values-in-php
'IT' 카테고리의 다른 글
목표 C의 메소드 구문 (0) | 2020.05.21 |
---|---|
jQuery 게시 JSON (0) | 2020.05.21 |
PHP에서 문자열을 특정 문자 수에 가장 가까운 단어로 자르는 방법은 무엇입니까? (0) | 2020.05.21 |
사용자의 현재 위치 / 좌표 얻기 (0) | 2020.05.21 |
Android에서 대화 상자가 닫히거나 취소되는 것의 차이점은 무엇입니까? (0) | 2020.05.20 |