我有一个动态数组,如下所示:
array(
"animal > hairy > dog > Médor",
"animal > hairy > dog > Fido",
"animal > hairy > dog > Max",
"animal > hairy > cat > Scratchy",
"animal > hairy > bear > badBoy"
)
如何轻松获取删除相似前缀的数组?
我的意思是,我想获得:
array(
"dog > Médor",
"dog > Fido",
"dog > Max",
"cat > Scratchy",
"bear > badBoy"
)
当然,有一种方法可以逐字逐句地比较,但是它是一种高复杂度的解决方案(相似字母的数量*值的数量),我想它存在更好的方法...... < / p>
有任何帮助吗? 谢谢,
答案 0 :(得分:0)
对不起,应该更明确;编辑。使用strrpos(反向搜索字符串)和substr 2次递归:
for ($i = 0; $i < $numRows; $i++) {
$Result = substr($Array[$i],0,strrpos($Array[$i], '> ')-1);
$Result = substr($Array[$i],strrpos($Result, '> ')+2);
}
这将为您提供所需字符串的初始位置,然后可以轻松获取。
答案 1 :(得分:0)
PHP有很多内置的sting函数,preg_replace可能是最强大的,也是我默认使用的。 str_replace也可以。试试这个。
<?php
$bigArray = array(
"animal > hairy > dog > Médor",
"animal > hairy > dog > Fido",
"animal > hairy > dog > Max",
"animal > hairy > cat > Scratchy",
"animal > hairy > bear > badBoy"
);
$numRows = count($bigArray);
echo "The number of rows is $numRows<br />";
$newArray = array();
for ($i = 0; $i < $numRows; $i++) {
$newRow = preg_replace('/animal > hairy > /', '', $bigArray[$i]);
array_push($newArray, $newRow);
}
for ($i = 0; $i < $numRows; $i++) {
echo "$newArray[$i] <br />";
}
?>
这是输出
The number of rows is 5
dog > Médor
dog > Fido
dog > Max
cat > Scratchy
bear > badBoy