php - 为数组中找到的每个索引添加 +1
问题描述
我有一个表单,它接受用户输入并将其放入数组中,然后用户选择他们想要在所述数组中找到的单词。此后检查该数组以查看单词的每个索引是什么以及该单词在文本中的每次出现。
因此,如果您编写字符串“What is what”并想找到单词“what”,它会说单词的位置是“0 和 2”,而我希望它说“1 和 3”。我该怎么做?
这是代码:
<form action="sida3.php" method="post">
Text: <textarea name="textarea"></textarea>
<br> Search word: <input type="text" name="search">
<br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
if(isset($_POST['submit'])){
$parts = explode(" ", $_POST['textarea']);
$strName = $_POST['search'];
print_r ($parts);
echo '<br>';
foreach($parts as $item) {
if ($item == $strName) {
$counter++;
}
}
echo "The word $strName can be found at: ";
echo implode(' ', array_keys($parts, $strName));
echo "<br>";
echo "The word $strName was found $counter times";
}
解决方案
您可以在内爆之前映射+1
数组键。如果您对此感兴趣,我还建议了另一种查找搜索词并计算出现次数的方法,但 map 也可以按照您当前的方式工作。
$found = array_intersect($parts, [$strName]);
echo "The word $strName can be found at: ";
echo implode(' ', array_map(function($x) { return $x + 1; }, array_keys($found)));
echo "<br>";
echo "The word $strName was found ". count($found) ." times";
推荐阅读
- android - 如何在点击时获取蓝牙设备的mac地址?
- java - 如何在 for 循环中有一个数组,它实际上会在每次运行时改变 for 循环的大小?
- r - GLMER R 的输出,.sig01、.sig02、.sig03 的含义
- c++ - 如果我在类声明中定义了虚拟析构函数,那么实现(.cpp)文件中需要什么代码?
- c++ - mt19937 无法设置 random_device
- php - 读取从 PS3 发送的 GET 请求并返回一个字符串
- html - 如何在不使用 javascript 的情况下以 css 或替代方式为显示属性设置动画
- python - python selenium - 如何使 webdriver 使用 XPATH 2.0 版
- fortran - 有什么方法可以避免 Fortran 90 中的嵌套 do 循环?
- c++ - 当我在窗口上调用 SetWindowLongPtr(GWL_STYLE) 时,为什么窗口会丢失其 HTMEME?