从php中的数组中删除整行

时间:2015-12-04 20:02:16

标签: php arrays unset

如何从数组中删除整行?按下删除按钮时,应删除整行。

我的数组看起来像这样:

$liste[0][0] = email-user1
$liste[0][1]= password-user1
$liste[1][0] = email-user2
$liste[1][1]= password-user2

因此,如果我删除了一个用户,那么user2应该从user1(它应该消失)取代。

 if (isset($_GET['delete'])){
   $id=key($_GET['delete']);
    for ($i = 0; $i < count($liste); $i++){
        if ("$i"=="$id"){
            unset($liste[$id][0]);
            unset($liste[$id][1]);
            unset($liste[$id][2]);

        }
        else{

            }

    }

更新 我现在正在使用array_splice($liste, $id, 1);,但每当我尝试将其保存到文件时,我都会收到错误:implode(): Invalid arguments passed。为了将其保存到文件中,我使用以下函数:

  function saveDataToFile($fileName, $liste){
    $file=fopen($fileName,"w");
    for ($i = 0; $i < count($liste); $i++) {
        $zArray=$liste[$i]; 
        $zeile=implode("|", $zArray);
        if(strlen($zeile) > 0){ 
            $zeile=$zeile."\r\n"; 
            fwrite($file, $zeile);
        }
    }
    fclose($datei);
}

3 个答案:

答案 0 :(得分:1)

您可以使用array_splice()方法:

array_splice($liste, $id, 1);

答案 1 :(得分:1)

请尝试以下代码:

$liste[0][0] = "email-user1";
$liste[0][1]= "password-user1";
$liste[1][0] = "email-user2";
$liste[1][1]= "password-user2";
$liste[2][0] = "email-user3";
$liste[2][1]= "password-user3";

unset($liste[1]); // say you want to delete this row
$new_arr = $liste;
unset($liste);
$i=0;
foreach($new_arr as $value){
    $liste[$i] = $value;
    $i++;
}

答案 2 :(得分:0)

$liste[0][0]$liste[0][1]$liste[0][2]除了分配给array(value, value, value)的值$liste[0](内部数组)之外别无其他阵列)

取消设置此(外部)数组值$liste[0]就足够了:

unset($liste[$id]);

如果您关心此阵列的键(我从0..n看到循环),您需要使用以下方法重新索引数组:

$liste = array_values($liste);

这将使您的数组行为更像数组通常在其他编程语言中执行的操作

良好的做法是使用foreach而不是for。在这种情况下,您无需重新索引:

for ($liste as $key=>$value){
    if ("$key"=="$id"){
        unset($liste[$key]);
    }

但无论如何,你不必为了找到一个键而遍历一个数组。这样就足够了:

if (isset($liste[$id])) { /* optional: check if the key exists */ }

unset($liste[$id]);