【发布时间】:2022-01-13 13:11:55
【问题描述】:
这就是我的数组 ($dataArray) 的样子:
Array
(
[0] => Array
(
[0] => Date
[1] => Time
[2] => Duration
[3] => Info
[4] => Client
)
[1] => Array
(
[0] => 2021-12-01
[1] => 10:45:43
[2] => 237
[3] => Some text from
[4] => Client 1
)
[2] => Array
(
[0] => 2021-12-01
[1] => 11:29:13
[2] => 77
[3] => Nothing important
[4] => Client 2
)
[3] => Array
(
[0] => 2021-12-01
[1] => 11:53:03
[2] => 44
[3] => anonymous
[4] => Client 1
)
我需要循环遍历它来搜索客户端名称,如果我在元素 4 中找到匹配的名称,则删除整个数组。
$ExportKDname = "Client 1"
foreach($dataArray as $key => $sub_array) {
if($sub_array[4] == $ExportKDname) {
unset($dataArray[$key]);
break;
}
}
print_r($dataArray);
但是使用此代码不会删除任何数组。而我就是找不到正确的方法。
如果我们在数组中找到“客户端 1”,我需要的最终数组如下所示:
Array
(
[0] => Array
(
[0] => Date
[1] => Time
[2] => Duration
[3] => Info
[4] => Client
)
[1] => Array
(
[0] => 2021-12-01
[1] => 11:29:13
[2] => 77
[3] => Nothing important
[4] => Client 2
)
【问题讨论】:
-
该代码应该可以正常工作,实际上可以。它当然只会删除它找到的第一次出现
-
您的 exportKDname 变量缺少分号。然而我的猜测是你的名字中有空格,因为 Riggs 是正确的,代码通常可以正常工作。修剪您的子字段和您的 exportDKname 变量。
-
首先,为什么要放break 如果需要删除2个元素?
-
删除中断,还要确保 $sub_array[4] 不包含任何额外的空格,你可以这样做
if (trim($sub_array[4]) == $ExportKdName) -
Demo of code working, your code 或评论
break;以删除所有出现的Client 1