我有一个数组如下所示
$fruit = array(' apple ','banana ', ' , ', ' cranberry ');
我想要一个数组,其中包含的值没有空白两侧,但它可以包含空值如何在php中做到这一点。输出数组应该是这样的
$fruit = array('apple','banana', ',', 'cranberry');
我有一个数组如下所示
$fruit = array(' apple ','banana ', ' , ', ' cranberry ');
我想要一个数组,其中包含的值没有空白两侧,但它可以包含空值如何在php中做到这一点。输出数组应该是这样的
$fruit = array('apple','banana', ',', 'cranberry');
当前回答
Array_map和trim可以完成这项工作
$trimmed_array = array_map('trim', $fruit);
print_r($trimmed_array);
其他回答
function trimArray(&$value)
{
$value = trim($value);
}
$pmcArray = array('php ','mysql ', ' code ');
array_walk($pmcArray, 'trimArray');
通过使用array_walk函数,我们可以从数组元素中删除空格,元素返回相同数组中的结果。
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上的第二个例子
$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秒 对于:9.8266389369965秒
这个值当然可能会改变,但我想说foreach是最好的选择。