我是PHP的新手。我需要过滤服务器的响应,以提高性能。我有一个由管道char分割的有效负载,并切片以仅检索我需要的数据:
$alllogsplitted = explode("|",$row['PAYLOAD']);
print_r(array_slice($alllogsplitted, 23, 22));
每个位置的数据都具有相同的结构,例如:A1;0;0
表示:type;firstvalue;secondvalue
。现在我想只得到firstvalue
与零不同的数据。实际的回应是:
Array
(
[0] => A1;0;0
[1] => A2;0;0
[2] => A3;0;0
[3] => A4;0;0
[4] => A5;0;1593720
[5] => A6;0;0
[6] => A7;0;29
[7] => A8;3;0 // this data is to retrieve
[8] => A9;0;0
[9] => A13;0;0
[10] => A14;0;0
[11] => A23;1;33802 // this data is to retrieve
[12] => A25;0;2706254
[13] => A27;0;100
[14] => A30;0;0
[15] => A31;0;100785
[16] => A32;0;0
[17] => A33;0;0
[18] => A34;0;0
[19] => A47;0;128694
[20] => A48;0;2
[21] => B1;0;145
)
Array
(
[0] => A1;0;0
[1] => A2;0;0
[2] => A3;0;0
[3] => A4;0;0
[4] => A5;0;1593688
[5] => A6;0;0
[6] => A7;0;29
[7] => A8;3;0 // this data is to retrieve
[8] => A9;0;0
[9] => A13;0;0
[10] => A14;0;0
[11] => A23;0;33802
[12] => A25;0;2706254
[13] => A27;0;100
[14] => A30;0;0
[15] => A31;0;100785
[16] => A32;0;0
[17] => A33;0;0
[18] => A34;0;0
[19] => A47;0;128694
[20] => A48;0;2
[21] => B1;0;145
)
Array
(
[0] => A1;0;0
[1] => A2;0;0
[2] => A3;2;1 // this data is to retrieve
[3] => A4;0;0
[4] => A5;0;1593688
[5] => A6;0;0
[6] => A7;0;26
[7] => A8;0;981
[8] => A9;0;0
[9] => A13;0;0
[10] => A14;0;0
[11] => A23;0;33802
[12] => A25;0;2706254
[13] => A26;0;3
[14] => A27;0;100
[15] => A30;0;0
[16] => A31;0;100785
[17] => A32;0;0
[18] => A33;0;1
[19] => A34;0;0
[20] => A47;0;128694
[21] => A48;0;2
)
而我想要这个回应:
Array
(
[7] => A8;3;0 // this data is to retrieve
[11] => A23;1;33802 // this data is to retrieve
)
Array
(
[7] => A8;3;0 // this data is to retrieve
)
Array
(
[2] => A3;2;1 // this data is to retrieve
)
我怎么能得到这个?谢谢你的帮助!
答案 0 :(得分:1)
这可能会有所帮助:$ array是您要过滤的数组
foreach ($array as $key => $value) {
$columns = explode(';', $value);
if($columns[1] != 0) {
$columns = implode(';', $columns);
$result[$key] = $columns;
}
}
答案 1 :(得分:1)
这个功能应该适合你。它遍历数组,仅根据您指定的条件保留实例
function filterArrayForResult($array) {
$newArray = array_filter($array, function($string) {
$stringArray = explode(';', $string); // Creates an array from the string
return ($stringArray[1] != 0); // Only keep the elements that equals true
});
return $newArray // Return the result
}