从数组php中删除键和值

时间:2018-09-07 19:37:22

标签: php arrays

需要删除存储在数据库中的数组,但这似乎不能很好地工作

$content_id = array('p','103');
$content = unserialize($row['content_id']);
if (in_array($content_id, $content)) {
    foreach($content as $key => $value);
    if ($value == $content_id) unset($content[$key]);
    $insert_new = serialize($content); 
    print_r($insert_new);
}

$content[$key]始终是我从数据库中获得的第一个价值,我需要从存储在数据库中的$content_id中删除array,然后我将序列化内容并更新行。

数组外观

Array
(
    [0] => v
    [1] => 103
)

Array
(
    [0] => p
    [1] => 103
)
Array
(
    [0] => v
    [1] => 200
)

Array
(
    [0] => p
    [1] => 600
)

2 个答案:

答案 0 :(得分:0)

在您的代码中,您没有在数组上循环(虽然您做了,但是您没有在循环中做任何事情),因为在该行的末尾有一个;,而没有{{ 1}}封装了循环。进行更改将与您的原始比较一起使用。

{}

答案 1 :(得分:-1)

尝试一下

 $new_array = []
 foreach($content as $key => $value){
    if ($value != $content_id){
       $new_array[] = $value
    }
 }

$insert_new = serialize($new_array ); 
print_r($insert_new);

这是假设您发布的数组实际上是这样的:

Array(
    [0] => Array
    (
        [0] => v
        [1] => 103
    ),
    [1] => Array
    (
        [0] => p
        [1] => 103
    ),
    [2] => Array
    (
        [0] => v
        [1] => 200
    ),
    [3] => Array
    (
        [0] => p
        [1] => 600
    )
)

因为您发布的是4数组,所以上面的数组可能就是上面的样子。由于您使用了;,因此甚至无法使用。您可以像这样测试:

$a=[1,2,3,4];

foreach($a AS $b);
echo $b;

输出:

4

SandBox您会看到得到4,因为那是数组中的最后一个值,所以预期的输出将是1234。但是由于使用了;分号,它会运行循环,然后在完成循环后,它将运行回显。

相关问题