从数字中删除整数数组值

时间:2018-06-06 12:59:08

标签: php sql

我在表格中的字段中存储了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';
}

3 个答案:

答案 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;