我正在尝试创建一个程序,用于确定字符串是否为回文序列。
这是我得到的错误。
注意:第22行的C:\ wamp \ www \ task18.php中的数组到字符串转换
我的代码如下:
<?php
//TASK 18 PALINDROME
//use string split function to split a string into an array
$str = "Mum";
$str =strtolower($str);
$strArray = array();
$strArray = str_split($str);
$len = sizeof($strArray);
$reverseStr ="";
for($i=$len-1; $i>=0; $i--){
$reverseStr .=$strArray[$i];
}
if ($strArray == $reverseStr) {
echo " $strArray is a palindrome";
} else {
echo " $strArray is not a palindrome";
}
答案 0 :(得分:1)
首先,您要将字符串($reverseStr
)与数组($strArray
)进行比较。
您需要编辑代码:
for($i=$len-1; $i>=0; $i--){
$reverseStr[] .=$strArray[$i];
}
然后将反转的单词放入数组中。因此,mum
将正确输出为mum
,测试将为tset
,但是在数组中。
这将使if
通过,但你不能回显一个数组,所以你应该回显$str
。
完整代码:
$str = "mum";
$str =strtolower($str);
$strArray = array();
$strArray = str_split($str);
$len = sizeof($strArray);
$reverseStr = array();
for($i=$len-1; $i>=0; $i--){
$reverseStr[] .=$strArray[$i];
}
if ($strArray == $reverseStr) {
echo "$str is a palindrome";
} else {
echo "$str is not a palindrome";
}
或者如果您需要$strArray
使用echo
,则可以使用implode()
:
echo implode($strArray). " is/is not a palindrome";
如果你想缩短它,你可以使用它:
$str = strtolower("Mum");
$strArray = str_split($str);
$len = sizeof($strArray);
$reverseStr = array();
for($i=$len-1; $i>=0; $i--)
$reverseStr[] .=$strArray[$i];
echo "$str is ".($strArray==$reverseStr ? "" : "not") . " a palindrome";
答案 1 :(得分:1)
描述: - 你不能回应一个数组,这就是你得到这个错误的原因。因为你正在回应一个不可能的数组。类型杂耍(变量有时会被自动转换为最合适的。)这同样发生在你的代码,因为你试图回应一个数组,当php试图将它转换为字符串时,它失败了。以下是使用str_split()检查palidrome的代码。
<?php
$word = strtolower("mum");
$splitted = str_split($word);
$reversedWord = "";
$length = strlen($word);
for($i = 0; $i < $length; $i++)
$reversedWord .= $splitted[$length - $i - 1];
echo $word == $reversedWord ? "It's a palindrome " : "It's not a palindrome";
?>
答案 2 :(得分:0)
你也可以在不使用任何php函数的情况下使用给定的东西。
$str="level";
for($i=0;$i<40000;$i++)
if($str[$i])
$count++;
else
break;
for ($j=$count;$j >=0; $j--){
$newStr.=$str[$j];
}
//echo $newStr;
if($newStr==$str)
echo $newStr." is a palindrome";
else
echo $newStr." is not a palindrome";
?>
答案 3 :(得分:0)
您可能想尝试一下,它有效......
distances = [1,2]
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)),
columns=['Group','Dist1','Dist2','Value'])
# get one row per group, with the two distances for each row
df_groups = df.groupby('Group')[['Dist1','Dist2']].mean()
# create KDTree for quick searching
tree = cKDTree(df_groups[['Dist1','Dist2']])
# find points within a given radius
for i in distances:
closeby = tree.query_ball_tree(tree, r=i)
# put into density column
df_groups['groups_within_' + str(i) + 'miles'] = [len(x) for x in closeby]
# get average values of nearby groups
for idx, val in enumerate(df_groups.index):
val_idx = df_groups.iloc[closeby[idx]].index.values
mean = df.loc[df['Group'].isin(val_idx), 'Value'].mean()
df_groups.loc[val, str(i) + '_mean_values'] = mean
# merge back to dataframe
df = pd.merge(df, df_groups[['groups_within_' + str(i) + 'miles',
str(i) + '_mean_values']],
left_on='Group',
right_index=True)