How to trim white spaces of array values in php

后端 未结 12 1375
旧巷少年郎
旧巷少年郎 2020-11-28 19:30

I have an array as follows

$fruit = array(\'  apple \',\'banana   \', \' , \',     \'            cranberry \');

I want an array which conta

相关标签:
12条回答
  • 2020-11-28 20:13
    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";
    

    The output of the code above is:

    Array map: 8.6775720119476 seconds
    Array walk: 10.423238992691 seconds
    Foreach: 7.3502039909363 seconds
    For: 9.8266389369965 seconds

    This values of course may change but I would say foreach is the best option.

    0 讨论(0)
  • 2020-11-28 20:14
    function trimArray(&$value) 
    { 
        $value = trim($value); 
    }
    $pmcArray = array('php ','mysql ', ' code ');
    array_walk($pmcArray, 'trimArray');
    

    by using array_walk function, we can remove space from array elements and elements return the result in same array.

    0 讨论(0)
  • 2020-11-28 20:15

    I had trouble with the existing answers when using multidimensional arrays. This solution works for me.

    if (is_array($array)) {
        foreach ($array as $key => $val) {
            $array[$key] = trim($val);
        }
    }
    
    0 讨论(0)
  • 2020-11-28 20:16
    $fruit= array_map('trim', $fruit);
    
    0 讨论(0)
  • 2020-11-28 20:17

    array_map and trim can do the job

    $trimmed_array = array_map('trim', $fruit);
    print_r($trimmed_array);
    
    0 讨论(0)
  • 2020-11-28 20:18

    array_map('trim', $data) would convert all subarrays into null. If it is needed to trim spaces only for strings and leave other types as it is, you can use:

    $data = array_map(
        function ($item) {
            return is_string($item) ? trim($item) : $item;
        },
        $data
    );
    
    0 讨论(0)
提交回复
热议问题