Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组和多维数组之间的PHP搜索和替换_Php_Arrays_Multidimensional Array_Str Replace - Fatal编程技术网

数组和多维数组之间的PHP搜索和替换

数组和多维数组之间的PHP搜索和替换,php,arrays,multidimensional-array,str-replace,Php,Arrays,Multidimensional Array,Str Replace,我有输入文本区域,我输入的文本被转换成$array如下: Array ( [0] => cat [1] => sat [2] => on [3] => the [4] => monkey [6] => is [7] => nice [8] => dog [9] => ate [10] => fish ) Array ( [0] => Arra

我有输入文本区域,我输入的文本被转换成
$array
如下:

Array
(
    [0] => cat
    [1] => sat
    [2] => on
    [3] => the
    [4] => monkey
    [6] => is
    [7] => nice
    [8] => dog
    [9] => ate
    [10] => fish
)
Array
(
    [0] => Array
        (
            [id] => 1
            [word] => cat
            [keyword] => nice cat
        )

    [1] => Array
        (
            [id] => 2
            [word] => dog
            [keyword] => good dog
        )

    [2] => Array
        (
            [id] => 3
            [word] => monkey
            [keyword] => cute monkey
        )

    [3] => Array
        (
            [id] => 4
            [word] => fish
            [keyword] => fresh fish
        )

    [4] => Array
        (
            [id] => 5
            [word] => bird
            [keyword] => love bird
        )

    [5] => Array
        (
            [id] => 6
            [word] => rabbit
            [keyword] => rats
        )

    [6] => Array
        (
            [id] => 7
            [word] => animal
            [keyword] => not animal
        )

)
我还有另一个数组,比如:

Array
(
    [0] => cat
    [1] => sat
    [2] => on
    [3] => the
    [4] => monkey
    [6] => is
    [7] => nice
    [8] => dog
    [9] => ate
    [10] => fish
)
Array
(
    [0] => Array
        (
            [id] => 1
            [word] => cat
            [keyword] => nice cat
        )

    [1] => Array
        (
            [id] => 2
            [word] => dog
            [keyword] => good dog
        )

    [2] => Array
        (
            [id] => 3
            [word] => monkey
            [keyword] => cute monkey
        )

    [3] => Array
        (
            [id] => 4
            [word] => fish
            [keyword] => fresh fish
        )

    [4] => Array
        (
            [id] => 5
            [word] => bird
            [keyword] => love bird
        )

    [5] => Array
        (
            [id] => 6
            [word] => rabbit
            [keyword] => rats
        )

    [6] => Array
        (
            [id] => 7
            [word] => animal
            [keyword] => not animal
        )

)
我试图做的是替换
$array
中与
$other\u array
中的[word]匹配的每个单词,并替换
$other\u array
中基于文本区域的[keyword]中的每个单词

我试着用
str\u replace
,但结果太糟糕了

我在textarea中输入的文本

cat sat on the monkey, monkey is nice, dog ate fish
我想要一个这样的结果

nice cat sat on the cute monkey, cute monkey is nice, good dog ate fresh fish
试试这个代码

$check = [
    ["id"=>1, "word"=>"dog", "keyword"=>"good dog"],
    ["id"=>2, "word"=>"monkey", "keyword"=>"cute monkey"],
    ["id"=>3, "word"=>"fish", "keyword"=>"fresh fish"]
];


$input = [
           'dog',
           'sat',
           'monkey',       
           'fish'       
        ];


$result =   array_map(function ($v) use ($value, $check) {
                $key = array_search($v, array_column($check, 'word'));
                if(is_numeric($key)){
                    return $v = $check[$key]['keyword'];
                }

                return $v;
            }, $input);

print_r($result);

echo implode(" ",$result);
链接:

请尝试此代码

$check = [
    ["id"=>1, "word"=>"dog", "keyword"=>"good dog"],
    ["id"=>2, "word"=>"monkey", "keyword"=>"cute monkey"],
    ["id"=>3, "word"=>"fish", "keyword"=>"fresh fish"]
];


$input = [
           'dog',
           'sat',
           'monkey',       
           'fish'       
        ];


$result =   array_map(function ($v) use ($value, $check) {
                $key = array_search($v, array_column($check, 'word'));
                if(is_numeric($key)){
                    return $v = $check[$key]['keyword'];
                }

                return $v;
            }, $input);

print_r($result);

echo implode(" ",$result);

链接:

为了提高性能,您可以保存映射以避免每次遍历另一个数组。可以使用“内爆”和“分解”在字符串和数组之间进行转换

$value_map = [];
foreach($another_array as $v)
{
  $value_map[$k['word']] = $v['keyword'];
}
$result = array_map(function($v) use($value_map){return isset($value_map[$v]) ? $value_map[$v] : $v;}, $array);

为了提高性能,可以保存映射以避免每次遍历另一个数组。可以使用“内爆”和“分解”在字符串和数组之间进行转换

$value_map = [];
foreach($another_array as $v)
{
  $value_map[$k['word']] = $v['keyword'];
}
$result = array_map(function($v) use($value_map){return isset($value_map[$v]) ? $value_map[$v] : $v;}, $array);

如果你没有任何选择,请试试这个

$array = array
(
    0 => 'cat',
    1 => 'sat',
    2 => 'on',
    3 => 'the',
    4 => 'monkey',
    6 => 'is',
    7 => 'nice',
    8 => 'dog',
    9 => 'ate',
    10 => 'fish'
);

$anotherarray = array
(
    0 => array('id' => 1,'word' => 'cat','keyword' => 'nice cat'),
    1 => array('id' => 2,'word' => 'dog','keyword' => 'good dog'),
    2 => array('id' => 3,'word' => 'monkey','keyword' => 'cute monkey'),
    3 => array('id' => 4,'word' => 'fish','keyword' => 'fresh fish'),
    4 => array('id' => 5,'word' => 'bird','keyword' => 'love bird'),
    5 => array('id' => 6,'word' => 'rabbit','keyword' => 'rats'),
    6 => array('id' => 7,'word' => 'animal','keyword' => 'not animal')
);

$concat = implode(' ', $array);

echo $concat.'<br/>';

foreach ($array as $key1 => $item) 
{
    foreach ($anotherarray as $key2 => $search) 
    {
        if(in_array($item, $search))
        {
            $array[$key1] = $search['keyword'];
        }
    }
}

$concat = implode(' ', $array);

echo $concat;
$array=array
(
0=>“cat”,
1=>“sat”,
2=>“开”,
3=>“the”,
4=>“猴子”,
6=>“是”,
7=>“不错”,
8=>“狗”,
9=>“ate”,
10=>“鱼”
);
$anotherarray=array
(
0=>array('id'=>1,'word'=>'cat','keyword'=>'nice cat'),
1=>数组('id'=>2,'word'=>'dog','keyword'=>'good dog'),
2=>array('id'=>3,'word'=>'monkey','keyword'=>可爱的monkey'),
3=>数组('id'=>4,'word'=>'fish','keyword'=>'fresh fish'),
4=>数组('id'=>5,'word'=>'bird','keyword'=>'love bird'),
5=>array('id'=>6,'word'=>rabbit','keyword'=>rats'),
6=>数组('id'=>7,'word'=>'animal','keyword'=>notanimal'))
);
$concat=内爆(“”,$array);
echo$concat.“
”; foreach($key1=>$item的数组) { foreach($key2=>$search的另一个数组) { if(在数组中($item$search)) { $array[$key1]=$search['keyword']; } } } $concat=内爆(“”,$array); echo$concat;
如果没有任何选项,请尝试此选项

$array = array
(
    0 => 'cat',
    1 => 'sat',
    2 => 'on',
    3 => 'the',
    4 => 'monkey',
    6 => 'is',
    7 => 'nice',
    8 => 'dog',
    9 => 'ate',
    10 => 'fish'
);

$anotherarray = array
(
    0 => array('id' => 1,'word' => 'cat','keyword' => 'nice cat'),
    1 => array('id' => 2,'word' => 'dog','keyword' => 'good dog'),
    2 => array('id' => 3,'word' => 'monkey','keyword' => 'cute monkey'),
    3 => array('id' => 4,'word' => 'fish','keyword' => 'fresh fish'),
    4 => array('id' => 5,'word' => 'bird','keyword' => 'love bird'),
    5 => array('id' => 6,'word' => 'rabbit','keyword' => 'rats'),
    6 => array('id' => 7,'word' => 'animal','keyword' => 'not animal')
);

$concat = implode(' ', $array);

echo $concat.'<br/>';

foreach ($array as $key1 => $item) 
{
    foreach ($anotherarray as $key2 => $search) 
    {
        if(in_array($item, $search))
        {
            $array[$key1] = $search['keyword'];
        }
    }
}

$concat = implode(' ', $array);

echo $concat;
$array=array
(
0=>“cat”,
1=>“sat”,
2=>“开”,
3=>'的',
4=>“猴子”,
6=>“是”,
7=>“不错”,
8=>“狗”,
9=>“ate”,
10=>“鱼”
);
$anotherarray=array
(
0=>array('id'=>1,'word'=>'cat','keyword'=>'nice cat'),
1=>数组('id'=>2,'word'=>'dog','keyword'=>'good dog'),
2=>array('id'=>3,'word'=>'monkey','keyword'=>可爱的monkey'),
3=>数组('id'=>4,'word'=>'fish','keyword'=>'fresh fish'),
4=>数组('id'=>5,'word'=>'bird','keyword'=>'love bird'),
5=>array('id'=>6,'word'=>rabbit','keyword'=>rats'),
6=>数组('id'=>7,'word'=>'animal','keyword'=>notanimal'))
);
$concat=内爆(“”,$array);
echo$concat.“
”; foreach($key1=>$item的数组) { foreach($key2=>$search的另一个数组) { if(在数组中($item$search)) { $array[$key1]=$search['keyword']; } } } $concat=内爆(“”,$array); echo$concat;
试试这个代码

foreach ($array as $k => $v) {
    if($a = array_search($v, array_column($another_array, 'word'))){
        $array[$k] = $another_array[$a]['keyword'];
    }
}
$str = implode(' ', $array);
试试看,这会有用的。

试试这段代码

foreach ($array as $k => $v) {
    if($a = array_search($v, array_column($another_array, 'word'))){
        $array[$k] = $another_array[$a]['keyword'];
    }
}
$str = implode(' ', $array);

试一试,这就行了。

你说的“结果太乱”是什么意思?我的意思是,输出太糟糕了。请用
stru replace()
发布代码,这样我们就可以更正它了。。!“但是结果太乱了”是什么意思?我的意思是,输出太糟糕了。请尝试使用
stru replace()
发布代码,以便我们可以更正它。。!