[英]search for a string in array of arrays in PHP
我有這樣的數組。 我從服務器的響應中得到這個:
所以有時候數組是這樣的:
$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
(
[0] => Hello
[1] => Hi
[2] =>
)
所以基本上我剛剛從陣列轉移某些行是否包含字符串Event:
倒騰一些其他行,如果它不包含字符串Event:
。
如何在這樣的數組中搜索字符串?
您可以將array_walk
與strpos
一起使用,該解決方案基於提供的輸入
$res = [];
array_walk($array, function($v, $k) use (&$res){
if(strpos($v, ':') === false && strpos($v, 'active') === false && $v != ''){
$res[] = $v;
}
});
如果目標是獲取active channel
之后的所有值,並假定數組中的所有值都已進行數字索引,則可以使用array_search()
找到active channels
元素。 這將返回該元素的鍵(第一次出現)。 將其與array_slice()
一起使用array_slice()
第一個元素。 將array_search()
的返回值添加1,因為您也想刪除它。
$key = array_search('active channels', $array);
$output = array_slice($array, $key + 1);
如果您的數組未進行數字索引,則可以先使用array_values()
來獲取值,該數組是同一數組,只是進行數字索引。
$array = array_values($array);
$key = array_search('active channels', $array);
$output = array_slice($array, $key + 1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.