在PHP中的数组数组中搜索字符串
我有一个这样的数组。我从服务器的响应中得到: 所以有时候数组是这样的:在PHP中的数组数组中搜索字符串,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我有一个这样的数组。我从服务器的响应中得到: 所以有时候数组是这样的: $array = Array ( [0] => Message: Thanks for all [1] => Response: Goodbye [2] => [3] => inactive [4] => active call [5] => active chann
$array =
Array
(
[0] => Message: Thanks for all
[1] => Response: Goodbye
[2] =>
[3] => inactive
[4] => active call
[5] => active channels
[6] => Hello
[7] => Hi
[8] => yes
[9] => no
)
有时候是这样的:
$array =
Array
(
[0] => Message: Thanks for all
[1] => Response: Goodbye
[2] =>
[3] => SessionTV: 2019-06-24T17:29:53.925+0530
[4] => SessionTV: 2019-06-24T17:29:53.925+0530
[5] => SessionTV: 2019-06-24T17:29:53.925+0530
[6] => Event: 0
[7] => active channels
[8] => Hello
[9] => Hi
[10] =>
)
这就是我所尝试的:
if (in_array("Event:", $array))
{
array_shift($minarr);
array_shift($minarr);
array_shift($minarr);
array_shift($minarr);
array_shift($minarr);
array_shift($minarr);
array_shift($minarr);
}
else
{
array_shift($minarr);
array_shift($minarr);
array_shift($minarr);
array_shift($minarr);
array_shift($minarr);
}
但这不起作用
这两种情况下的预期产出为:
Array
(
[0] => Hello
[1] => Hi
[2] => yes
[3] => no
)
及
因此,基本上,如果数组中包含字符串事件:
,我只需移动数组中的一些行,如果数组中不包含字符串事件:
,则移动其他一些行
如何在这样的数组中搜索字符串?您可以使用
array\u walk
和strpos
,解决方案基于提供的输入
$res = [];
array_walk($array, function($v, $k) use (&$res){
if(strpos($v, ':') === false && strpos($v, 'active') === false && $v != ''){
$res[] = $v;
}
});
如果目标是获得
活动通道
之后的所有值,并假设数组中的所有值都以数字索引,则可以使用数组搜索()查找活动通道
元素。这将返回该元素的键(第一次出现)。将其与array\u slice()
一起使用,将第一个元素切掉。将1添加到array\u search()
的返回中,因为您也希望删除它
$key=array\u搜索('activechannels',$array);
$output=array\u slice($array,$key+1);
如果您的数组没有数字索引,您可以先使用array\u values()
获取值,这是同一个数组,只是数字索引
$array=array\u值($array);
$key=array\u search('activechannels',$array);
$output=array\u slice($array,$key+1);
- 现场演示
事件:
不存在于第一种类型的数组中。那么你是如何得出这样的结果的呢。你能详细说明一下吗?所以基本上你想得到活动通道
值之后的所有元素?所以你总是想从原始数组中得到发生[8]和[9],不管数组中是否包含带有事件:
的发生?是吗?你能解释一下你的目标背后的逻辑,而不是展示你的解决方案,并期望我们理解你的问题吗?@Qirel说了什么。您只需要“活动频道”之后的所有内容?如果最后一个元素中的单词包含:
或活动
?@Qirel这就是我提到的原因解决方案基于提供的输入
$res = [];
array_walk($array, function($v, $k) use (&$res){
if(strpos($v, ':') === false && strpos($v, 'active') === false && $v != ''){
$res[] = $v;
}
});