$a = array("world","love","shit","hello");
print_r(array_map('foo', $a);function foo($v) {
  return str_replace('o', 'x', $v);
}

解决方案 »

  1.   

    不想用str_replace函数怎么办?
      

  2.   

    数组先 join 成大字符串,然后再替换,然后再 split 还原成数组,这样处理在大容量数据时最快
      

  3.   


    数据:$a = array("world", "love", "shit", "hello");
    需求:把字符'o'替换为'x'
    方法一:不使用str_replace,但是效率比较低 
    function char_replace($a)
    {
    foreach($a as $value)
    { $s_len = strlen($b);
    for($i=0; $i<$s_len; $i++)
    {
    $new_char = $b[$i];
             if ($new_char == 'o')
             {
                 $new_char = 'x';
             }
    $new_str .= $new_char;
    }
    $new_a[] = $new_str;
    }
    return $new_a;
    }方法二:使用implode和explode,效率比较高
    function char_replace($a)
    {
    $str = implde('|', $a);
    $s_len = strlen($str);
    for($i=0; $i<$s_len; $i++)
    {
    $new_char = $str[$i];
    if ($new_char!='|' && $new_char=='o')
    {
    $new_char = 'x';
    }
    $new_str .= $new_char;
    }
    $new_a = explode('|', $new_str);

    return $new_a;
    }
    代码没测试,应该能够满足你要求
      

  4.   

    明明有str_replace为啥要绕那么远??
    如果是学习,那就表讲究那么多效率问题了。
      

  5.   

    我也来一段效率未知
    <?php
    function replaceO2X($oString,$key)
    {
        global $b;
        array_push($b,str_replace("o","x",$oString));
    }
    $a = array("world","love","shit","hello");
    $b = array();
    array_walk($a,replaceO2X);
    print_r($b);
    ?>
      

  6.   

    用implode和explode有个问题要注意,
    分隔符不能在数组中出现,
    比如用|, 如果数组中出现了|, 结果就不对了