我在表格中的字段中存储了50个以逗号分隔的值(例如:472744,341750,263249,...
我可以在该表中查询该字段。我想将值转换为数组并从数组中删除特定值。下面是我的代码,但它拒绝工作。任何人都可以解释原因吗?
public function getChurchPinInfo($id)
{
$query = $this->db -> prepare(
"SELECT * FROM church_pin_tbl WHERE church_id = ? LIMIT 1"
);
$query -> execute(array($id));
$result = $query->fetch();
return $result;
}
然后
$churchPinsArray = array((new Shop)->getChurchPinInfo($churchId)->pin);
if (($key = array_search(341750, $churchPinsArray)) !== false) {
unset($churchPinsArray[$key]);
print_r($churchPinsArray);
} else {
echo 'Not found';
}
答案 0 :(得分:0)
似乎问题是当你想要检查$ key是否为false时,检查作业“ $ key = array_search(341750,$ churchPinsArray)”是不是假的> 之后的任务。此外,因为$ churchPinsArray已经是一个数组,所以不应该需要第二行。这应该有效:
$churchPinsArray = array((new Shop)->getChurchPinInfo($churchId)->pin);
$key = array_search(341750, $churchPinsArray);
if ($key !== false) {
unset($churchPinsArray[$key]);
print_r($churchPinsArray);
} else {
echo 'Not found';
}
答案 1 :(得分:0)
你有两个问题:
第1个,就像@ 0x7a31c7已经说明的那样,你的if子句中的条件(详见他的回答)。
第二个是输入数组的结构。你做两次一个 <script type="text/javascript">
var id = null
$('#delBtn').on('click', function() {
id=$("#delBtn").attr("record_id")
$('#deleteModal').show();
});
$('#disMdBtn').on('click', function(){
$('#deleteModal').hide();
});
$('#accDelBtn').click(function() {
$.ajax({
type: "POST",
url: "delete.php",
data: { id: id }
})
});
</script>
,这将产生如下结构:
$a=array($b)
所以你的实际值隐藏在第3级。
array(1) { [0]=> array(1) { [0]=> array(2) { [0]=> int(472744) [1]=> int(341750) } } }
答案 2 :(得分:0)
这实际上是我的问题的答案 我成功将由逗号分隔的值转换为数组,然后在插入数组之前从数组列表中删除一个值
$churchPinList = (new Shop)->getChurchPinInfo($churchId)->pin;
$arr = explode(',', $churchPinList);
$churchPinsArray = array_map('intval', $arr);
$arrayWithoutUsedPin = array_diff($churchPinsArray, array($churchPin));
$newPins = implode(',', $arrayWithoutUsedPin);
echo $newPins;