2

次の 2 つの配列があります。

$strings = array('Apple', 'Banana', 'Orange');
$substrings = array('pp', 'range');

部分文字列に一致するすべての文字列を含む配列を取得したい:

Array
(
    [0] => Apple
    [2] => Orange
)

または新しいインデックスを使用:

Array
(
    [0] => Apple
    [1] => Orange
)
4

5 に答える 5

5

頭に浮かぶ簡単な解決策: と を組み合わせ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関数を使用できます。

于 2012-12-07T16:24:53.637 に答える
1
$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あなたには結果があります

于 2012-12-07T16:24:11.133 に答える
0

これには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.
于 2012-12-07T16:24:23.223 に答える
0

array_search を試してください。例として、このページの下部にある 2 番目のメモhttp://php.net/manual/en/function.array-search.phpを参照してください。

于 2012-12-07T16:24:25.307 に答える
0
$arr=array();
foreach($substrings as $item)
{
    $result=array_keys($strings,$item);
    if ($result)
    {
        $arr=array_merge($arr,$result);
    }
}
于 2012-12-07T16:28:22.547 に答える