/ / 1つの出力を持つマルチ配列 - PHP、配列

1つの出力を持つマルチ配列 - PHP、配列

ここで私のコードは、現在適切に動作していません。どうすればそれを動作させることができますか?私の願いは、出力を1つの文字列のようにすることです(もちろん配列を文字列に変換する方法はわかります):

単語を変更、追加、削除する

コード:

<?php

header("Content-Type: text/html; charset=utf-8");
$text = explode(" ", strip_tags("words altered added and removed to make it"));
$stack = array();

$words = array("altered", "added", "something");
foreach($words as $keywords){
$check = array_search($keywords, $text);
if($check>(-1)){
$replace = " ".$text[$check].",";
$result = str_replace($text[$check], $replace, $text);
array_push($stack, $result);
}
}

print_r($stack);
?>

出力:

Array
(
[0] => Array
(
[0] => words
[1] =>  altered,
[2] => added
[3] => and
[4] => removed
[5] => to
[6] => make
[7] => it
)

[1] => Array
(
[0] => words
[1] => altered
[2] =>  added,
[3] => and
[4] => removed
[5] => to
[6] => make
[7] => it
)
)

回答:

回答№1は1

それ以上の説明がなければ、これは次のように簡単です:

$text  = strip_tags("words altered added and removed to make it");
$words = array("altered", "added", "something");

$result = $text;
foreach($words as $word) {
$result = str_replace($word, "$word,", $result);
}
  • あなたのソース文字列を分解しないでください
  • 単語をループして単語を単語に置き換え、コンマを追加

ループアプローチを放棄するか、

$text   = strip_tags("words altered added and removed to make it");
$words  = array("altered", "added", "something");

$result = preg_replace("/(".implode("|", $words).")/", "$1,", $text);
  • 交互(OR)演算子に単語を畳み込んでパターンを作成する |
  • 見つかった単語を単語に置き換える $1 カンマ

回答№2の場合は0

あなたは iterator

// Array with your stuff.
$array = [];

$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $value) {
echo $v, " ";
}

回答№3の場合は0

あなたの元のアプローチは、変更。代わりに、分解された文字列内の単語をループします。それぞれの場合、変更する単語の配列内にある場合は、コンマを追加します。もしそうでなければ、修正された(またはそうでない)単語がスタックに入ります。

$text = explode(" ", strip_tags("words altered added and removed to make it"));
$words = array("altered", "added", "something");

foreach ($text as $word) {
$stack[] = in_array($word, $words) ? "$word," : $word;
}