次の 2 つの配列があります。
$strings = array('Apple', 'Banana', 'Orange');
$substrings = array('pp', 'range');
部分文字列に一致するすべての文字列を含む配列を取得したい:
Array
(
[0] => Apple
[2] => Orange
)
または新しいインデックスを使用:
Array
(
[0] => Apple
[1] => Orange
)
頭に浮かぶ簡単な解決策: と を組み合わせarray_filter
ますstrpos
。
$strings = array('Apple', 'Banana', 'Orange');
$substrings = array('pp', 'range');
$result = array_filter($strings, function($item) use($substrings) {
foreach($substrings as $substring)
if(strpos($item, $substring) !== FALSE) return TRUE;
return FALSE;
});
インデックスをリセットするには、array_values
関数を使用できます。
$strings = array('Apple', 'Banana', 'Orange');
$substrings = array('pp', 'range');
$newarray = array();
foreach ($strings as $string) {
foreach ($substrings as $substring) {
if (strstr($string, $substring)) {
array_push($newarray, $string);
}
}
}
$newarray
あなたには結果があります
これにはarray_filterを使用できます。
$strings = array('Apple', 'Banana', 'Orange');
$substrings = array('pp', 'range');
$result = array_filter($strings, function($string) use ($substrings){
foreach($substrings as $substring)
if(strstr($string, $substring) !== false)
return true;
return false;
});
// $result is the result you want.
array_search を試してください。例として、このページの下部にある 2 番目のメモhttp://php.net/manual/en/function.array-search.phpを参照してください。
$arr=array();
foreach($substrings as $item)
{
$result=array_keys($strings,$item);
if ($result)
{
$arr=array_merge($arr,$result);
}
}