>编辑:我的方法的目的是从数据库的字符串中删除值。
我似乎在任何地方都找不到这个问题的答案。你能在这样的str_replace内连接吗:
str_replace($pid . ",","",$boom);
- $pid 是一个页面 ID,例如 40
- $boom是一个松散数组
让它成为 56,12,但是如果没有连接器,它将产生:
,56,12
当我在str_replace中拥有连接时,它不会做任何事情。这可能吗?
回答您的问题:是的,你可以。该代码的工作方式符合您的预期。
但这种方法是错误的。它不适用于$pid = 12;
(最后一个元素,没有尾随昏迷(,并且会错误地替换$boom = '140,20,12'
中的40,
;
您应该将其保留在数组中,搜索不需要的值,如果发现它未从数组中设置,然后随着昏迷而内爆。
$boom = array_filter($boom);
$key = array_search($pid, $boom);
if($key !== false){
unset($boom[$key]);
}
$boom = implode(',',$boom);
[+] 您的代码不起作用,因为$boom
是一个数组,并且str_replace
对字符串进行操作。
由于$boom是一个数组,因此您不需要在大小写中使用数组。
更改此内容
$boom = explode(",",$ticket_array);
$boom = str_replace($pid . ",","",$boom);
$together = implode(",",$boom);
自
$together = str_replace($pid . ",","",$ticket_array);
<小时 />更新:如果还想使用阵列
$boom = explode(",",$ticket_array);
unset($boom[array_search($pid, $boom)]);
$together = implode(",",$boom);
编辑后,很明显您要从包含一个数字作为值的数组$boom
中删除 $pid
的值。您可以使用 array_search
来查找它是否在 if in 哪个键中。然后,您可以从$boom
unset
元素:
$pid = '40';
$boom = explode(',', '40,56,12');
$r = array_search($pid, $boom, FALSE);
if ($r !== FALSE) {
unset($boom[$r]);
}
老问题:
你能在这样的str_replace内连接吗:...?
是的,您可以,请参阅示例:
$pid = '40';
$boom = array('40,56,12');
print_r(str_replace($pid . ",", "", $boom));
结果:
Array
(
[0] => 56,12
)
这与您所做的非常相似,因此您可能在错误的地方寻找问题。可以为参数使用任何字符串表达式。
如果您不确定先创建变量,可能会更容易:
$pid = '40';
$boom = array('40,56,12');
$search = sprintf("%d,", $pid);
print_r(str_replace($search, "", $boom));
您应该将"票证数组"存储在单独的表中。
并使用常规SQL查询(UPDATE,DELETE(来操作它。
数据库名称中的关系词是有原因的。而你正在以如此野蛮的方式滥用这个智能软件。
str_split,它将字符串转换为数组,然后使用 foreach 循环回显除第一个值之外的所有值。
$numbers_string="40,56,12";
$numbers_array = str_split($numbers_string);
//then, when you have the array of numbers, you could echo every number except the first separating them with a comma
foreach ($numbers_array as $key => $value) {
if ($key > 0) {
echo $value . ", ";
}
}
如果你想跳过一个值,而不是它在数组中的位置,而是因为它的值,那么你可以这样做:
$unwanted_value="40";
foreach ($numbers_array as $key => $value) {
if ($value != $unwanted_value) {
echo $value . ", ";
}
else {
unset($numbers_array[$key]);
$numbers_array = array_values($numbers_array);
var_dump($numbers_array);
}
}