编辑:我的方法的目的是从数据库中的字符串中删除一个值。
我似乎无法在任何地方找到答案。你可以在这样的str_replace中连接:
str_replace($pid . ",","",$boom);
如果我有一个字符串:40,56,12我想把它变成56,12但是如果它没有连接器会产生:
,56,12
当我在str_replace中有concat它没有做任何事情。这可能吗?
答案 0 :(得分:2)
回答你的问题:是的,你可以。该代码可以按照您的预期运行。
但这种做法是错误的。它不适用于$pid = 12;
(最后一个元素,没有尾随昏迷),并且会错误地替换40,
中的$boom = '140,20,12'
;
你应该将它保存在数组中,搜索不需要的值,如果发现它从数组中取消设置,然后以昏迷内爆。
$boom = array_filter($boom);
$key = array_search($pid, $boom);
if($key !== false){
unset($boom[$key]);
}
$boom = implode(',',$boom);
[+]您的代码不起作用,因为$boom
是一个数组,而str_replace
是对字符串进行操作。
答案 1 :(得分:2)
由于$ 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);
答案 2 :(得分:1)
编辑完成后,您可以清楚地想要从包含一个数字的数组$pid
中删除$boom
的值。您可以使用array_search
查找是否在哪个键中。然后,您可以unset
$boom
中的元素:
$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));
答案 3 :(得分:1)
你可以使用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);
}
}
答案 4 :(得分:1)
您应将“票证数组”存储在单独的表格中 并使用常规SQL查询(UPDATE,DELETE)来操作它。
数据库名称中的关系字是出于这个原因。你正在以这种野蛮的方式滥用这款智能软件。