Yanıtlar:
array_map ve trim işi yapabilir
$trimmed_array = array_map('trim', $fruit);
print_r($trimmed_array);
array_map('rtrim', $fruit);. Umarım yardımcı olur :)
array_walk()trim()dizi kırpmak için ile kullanılabilir
<?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 adresindeki 2. örneğe bakın
Dizi çok boyutluysa, bu harika çalışır:
//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);
}
bir örnek testi şöyle:
$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 ) )
Bir boyutlu Diziyi veya çok boyutlu Dizinin en derin boyutunu kırpmak ve yazdırmak istiyorsanız şunları kullanmalısınız:
foreach($array as $key => $value)
{
$array[$key] = trim($value);
print("-");
print($array[$key]);
print("-");
print("<br>");
}
Kırpmak istiyorsanız, ancak bir boyutlu Dizi veya çok boyutlu Dizinin en derin boyutunu yazdırmak istemiyorsanız kullanmalısınız:
$array = array_map('trim', $array);
Çok boyutlu geçirmez çözüm:
array_walk_recursive($array, function(&$arrValue, $arrKey){ $arrValue = trim($arrValue);});
null .
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";
Yukarıdaki kodun çıktısı:
Dizi haritası: 8.6775720119476 saniye
Dizi yürüyüşü: 10.423238992691 saniye
Foreach: 7.3502039909363 saniye
İçin: 9.8266389369965 saniye
Bu değerler elbette değişebilir, ancak her şeyin en iyi seçenek olduğunu söyleyebilirim.
Değer NULL değerine sahipseniz, array_map değişiklik türünde kırpma.
Bunu yapmanın daha iyi bir yolu:
$result = array_map(function($v){
return is_string($v)?trim($v):$v;
}, $array);
tüm boşlukları kırpmak veya dizi öğelerinizi küçültmek için normal ifadeyi kullanabilirsiniz
$array = array_map(function ($item) {
return preg_replace('/\s+/', '', $item);
}, $array);