2016-05-24 63 views
-1

这是我的代码,目前无法正常工作。我怎样才能使它工作?我的愿望是使输出像一个字符串(当然我知道如何“转换”数组是string):带有一个输出的多阵列

话改变,添加和删除,使之

代码:

<?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

您的期望输出究竟是什么?你的问题很不清楚。 – Milanzor

+0

你可以使用implode('',$ stack [0]); –

+0

implode仅输出第一个数组结果 – Nick

回答

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和逗号替换找到的字
+0

谢谢SIR!这是真正的答案! – Nick

0

您可以使用iterator

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

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

您的建议不起作用,请在下次在此处发布代码之前运行代码。 – Nick

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; 
}