php str_replace 意外的字符替换
php str_replace unexpected char replace
我需要把一些单词改成数字。示例如下-
$status= str_replace(array("canceled","shipped","processing","complete","pending_payment","closed","fraud","holded","payment_review","pending"),array(4,6,2,10,1,12,0,1,1,2),$sale["status"]);
但是如果 DB 发出了意想不到的话,我想将其更改为 0。
这可能吗?
你可以这样做:
$statuses = [
"canceled" => 4,
"shipped" => 6,
"processing" => 2,
"complete" => 10,
"pending_payment" => 1,
"closed" => 12,
"fraud" => 0,
"holded" => 1,
"payment_review" => 1,
"pending" => 2,
];
$status = 0;
if (isset($statuses[$sale["status"]])) {
$status = $statuses[$sale["status"]];
}
这样您就可以很容易地看到哪个字符串值映射到哪个数字。将 $status 变量的默认值设置为 0。如果给定的状态字符串存在于您的 "statusmap" 中,请替换 $status 变量。
试试这个,
$status_words = array("canceled", "shipped", "processing", "complete", "pending_payment", "closed", "fraud", "holded", "payment_review", "pending");
$status_ints = array(4, 6, 2, 10, 1, 12, 0, 1, 1, 2);
$status = (in_array(trim($sale["status"]), $status_words) ?
str_replace($status_words, $status_ints, trim($sale["status"])) : '');
试一试,这应该有效。
我需要把一些单词改成数字。示例如下-
$status= str_replace(array("canceled","shipped","processing","complete","pending_payment","closed","fraud","holded","payment_review","pending"),array(4,6,2,10,1,12,0,1,1,2),$sale["status"]);
但是如果 DB 发出了意想不到的话,我想将其更改为 0。
这可能吗?
你可以这样做:
$statuses = [
"canceled" => 4,
"shipped" => 6,
"processing" => 2,
"complete" => 10,
"pending_payment" => 1,
"closed" => 12,
"fraud" => 0,
"holded" => 1,
"payment_review" => 1,
"pending" => 2,
];
$status = 0;
if (isset($statuses[$sale["status"]])) {
$status = $statuses[$sale["status"]];
}
这样您就可以很容易地看到哪个字符串值映射到哪个数字。将 $status 变量的默认值设置为 0。如果给定的状态字符串存在于您的 "statusmap" 中,请替换 $status 变量。
试试这个,
$status_words = array("canceled", "shipped", "processing", "complete", "pending_payment", "closed", "fraud", "holded", "payment_review", "pending");
$status_ints = array(4, 6, 2, 10, 1, 12, 0, 1, 1, 2);
$status = (in_array(trim($sale["status"]), $status_words) ?
str_replace($status_words, $status_ints, trim($sale["status"])) : '');
试一试,这应该有效。