我有一个动态数组,如下所示:
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"
)当然,有一种方法可以逐个字母和逐个值进行比较,但这是一个高度复杂的解决方案(相似字母的数量*值的数量),我猜它存在一个更好的方法来做到这一点……
有什么帮助吗?谢谢,
发布于 2014-05-22 08:50:15
抱歉,应该更明确些;正在编辑。递归地使用strrpos (字符串的反向搜索)和substr两次:
for ($i = 0; $i < $numRows; $i++) {
$Result = substr($Array[$i],0,strrpos($Array[$i], '> ')-1);
$Result = substr($Array[$i],strrpos($Result, '> ')+2);
}这将为您提供所需字符串的初始位置,然后可以轻松获得该位置。
发布于 2014-05-22 08:54:58
PHP有很多内置的字符串函数,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 https://stackoverflow.com/questions/23795989
复制相似问题