数组到字符串转换

时间:2012-11-01 13:31:45

标签: php arrays str-replace

$replacements = array(
    '{order_id}' => $order_id, 
    '{site_url}' => $settings["site_url"], 
    '{email}' => $user_email, 
    '{last_name}' => $last_name, 
    '{phone}' => $phone, 
    '{order_total}' => currency_format($order_total), 
);

    foreach($replacements as $param => $value){
    $sms = str_replace($param, $value, $db2->f('sms'));
    $user_to = str_replace($param, $value, $db2->f('user_to'));
    $user_from = str_replace($param, $value, $db2->f('user_from'));
    $user_subject = str_replace($param, $value, $db2->f('user_subject'));
    $user_body = str_replace($param, $value, $user_body);
    $admin_to = str_replace($param, $value, $db2->f('admin_to'));
    $admin_from = str_replace($param, $value, $db2->f('admin_from'));
    $admin_subject = str_replace($param, $value, $db2->f('admin_subject'));
    $admin_body = str_replace($param, $value, $db2->f('admin_body'));
}

有什么问题?为什么不能工作?数组到字符串转换....

在这种情况下,有人可以建议如何减少代码行数吗?

2 个答案:

答案 0 :(得分:2)

$replacements = array(
    '{order_id}' => $order_id, 
    '{site_url}' => $settings["site_url"], 
    '{email}' => $user_email, 
    '{last_name}' => $last_name, 
    '{phone}' => $phone, 
    '{order_total}' => currency_format($order_total), 
);

$templates = array(
    'sms' => $db2->f('sms'), 
    'user_to' => $db2->f('user_to'), 
    'user_from' => $db2->f('user_from'), 
    'user_subject' => $db2->f('user_subject'), 
    'user_body' => $db2->f('user_body'), 
    'admin_to' => $db2->f('admin_to'), 
    'admin_from' => $db2->f('admin_from'), 
    'admin_subject' => $db2->f('admin_subject'), 
    'admin_body' => $db2->f('admin_body')
);

foreach($templates as $way => $tmp){
    $templates[$way] = strtr($tmp, $replacements);
}

答案 1 :(得分:1)

每次循环时,你都会覆盖$ user body。 试试这个:

$replacements = array(
    '{order_id}' => $order_id, 
    '{site_url}' => $settings["site_url"], 
    '{email}' => $user_email, 
    '{last_name}' => $last_name, 
    '{phone}' => $phone, 
    '{order_total}' => currency_format($order_total), 
);

$user_body = $db2->f('user_body');
foreach($replacements as $param => $value){
    $user_body = str_replace($param, $value, $user_body);
}

echo $user_body;