0

我的会话未设置有问题,因为我已经在一个函数上完成了它,并且只有内部参数删除了选择值 id。

看一看:

/***
 * @name DeleteItem
 * @date 04.10.2014
 * @param   The array that contains the element to delete
 * @param   The id of the selected index
 * @param   The name of the button that start the delete
 * @version 1.0
 * @description Delete an item to the select
 */

function DeleteItem($array,$SelectID,$btnDelete) {
    //The delete button was clicked?
    if(isset($_POST[$btnDelete]))
    {
    //Find the element with the id and delete the value
    foreach ($array as $idx =>$value)
    {
        if ($idx == $SelectID)
        {
             unset($array,$SelectID);
        }
    }
    return $array;
    } 

谢谢 - 我确信这很简单。

4

3 回答 3

1

unset()对于您尝试执行的操作类型,您的语法是错误的。您只想$SelectID从数组中删除索引。试试下面的代码:

unset($array[$SelectID]);

此外,您不需要循环。下面是一个简化版:

function DeleteItem($array,$SelectID,$btnDelete) {
   //The delete button was clicked? and if index exists in array
   if(isset($_POST[$btnDelete]) && array_key_exists($SelectID, $array)) {
         unset($array[$SelectID]);
   }
   return $array;
}

DeleteItem()而且,只有在 POST 变量存在时才需要删除(调用)。因此,您可以进一步简化如下并isset($_POST[$btnDelete])if条件中删除:

if(isset($_POST[$btnDelete])) {
   DeleteItem($array,$SelectID);
}
于 2013-10-06T13:03:10.040 回答
0

最后发现只是参考值的问题(我正在使用副本)我只是在函数之前添加了一个 &

于 2013-10-08T13:54:14.687 回答
0

您错误地使用了“未设置”。

如果$SelectID是数组的一个值,

$index = array_search($SelectID, $array);
if ($index) {
  unset($array[$index]);
}

或者,如果$SelectID是数组的“键”而不是值,那么...

$keys = array_keys($array);
$index = array_search($SelectID, $keys);
if (!empty($keys[$index])) {
   unset($array[$keys[$index]]);
}
print_r($array);

(Pss:我们不需要foreach)

于 2013-10-06T13:20:14.490 回答