如何从数组中删除整行?按下删除按钮时,应删除整行。
我的数组看起来像这样:
$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);
}
答案 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]);