J'ai un tableau comme suit
$fruit = array(' apple ','banana ', ' , ', ' cranberry ');
Je veux un tableau qui contient les valeurs sans les espaces blancs de chaque côté mais il peut contenir des valeurs vides comment faire cela en php.le tableau de sortie devrait être comme ça
$fruit = array('apple','banana', ',', 'cranberry');
array_map('rtrim', $fruit);
. J'espère que ça aide :)array_walk()
peut être utilisé avectrim()
pour couper le tableau<?php function trim_value(&$value) { $value = trim($value); } $fruit = array('apple','banana ', ' cranberry '); var_dump($fruit); array_walk($fruit, 'trim_value'); var_dump($fruit); ?>
Voir le deuxième exemple sur http://www.php.net/manual/en/function.trim.php
la source
J'ai eu des problèmes avec les réponses existantes lors de l'utilisation de tableaux multidimensionnels. Cette solution fonctionne pour moi.
if (is_array($array)) { foreach ($array as $key => $val) { $array[$key] = trim($val); } }
la source
Si le tableau est multidimensionnel, cela fonctionnera très bien:
//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); }
un échantillon de test est comme ceci:
$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 ) )
la source
Si vous souhaitez découper et imprimer un tableau unidimensionnel ou la dimension la plus profonde d'un tableau multidimensionnel, vous devez utiliser:
foreach($array as $key => $value) { $array[$key] = trim($value); print("-"); print($array[$key]); print("-"); print("<br>"); }
Si vous souhaitez découper mais ne souhaitez pas imprimer un tableau unidimensionnel ou la dimension la plus profonde d'un tableau multidimensionnel, vous devez utiliser:
$array = array_map('trim', $array);
la source
Solution à l'épreuve multidimensionnelle:
array_walk_recursive($array, function(&$arrValue, $arrKey){ $arrValue = trim($arrValue);});
la source
null
.$fruit= array_map('trim', $fruit);
la source
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";
La sortie du code ci-dessus est:
Carte du tableau: 8,6775720119476 secondes Parcours du
tableau: 10,423238992691 secondes
Foreach: 7,3502039909363 secondes
Pendant: 9,8266389369965 secondes
Ces valeurs peuvent bien sûr changer, mais je dirais que foreach est la meilleure option.
la source
array_map('trim', $data)
convertirait tous les sous-tableaux ennull
. S'il est nécessaire de couper les espaces uniquement pour les chaînes et de laisser les autres types tels quels, vous pouvez utiliser:$data = array_map( function ($item) { return is_string($item) ? trim($item) : $item; }, $data );
la source
Trim in array_map change de type si vous avez NULL dans la valeur.
Meilleure façon de le faire:
$result = array_map(function($v){ return is_string($v)?trim($v):$v; }, $array);
la source
vous pouvez simplement utiliser regex pour couper tous les espaces ou réduire les éléments de votre tableau
$array = array_map(function ($item) { return preg_replace('/\s+/', '', $item); }, $array);
la source
function trimArray(&$value) { $value = trim($value); } $pmcArray = array('php ','mysql ', ' code '); array_walk($pmcArray, 'trimArray');
en utilisant la fonction array_walk, nous pouvons supprimer l'espace des éléments du tableau et les éléments retournent le résultat dans le même tableau.
la source