【问题标题】:Is it possible to "reverse" php str_shuffe?是否可以“反转” php str_shuffe?
【发布时间】:2018-10-11 00:04:35
【问题描述】:

我只是想知道是否可以在php中反转字符串洗牌功能?

例如:

$shuffle = str_shuffle("popcorn");
echo $shuffle;

如果您刷新页面 3 次,您可能会看到如下内容:

  • oroppcn
  • oppncro
  • opcrnop

等等……

有没有办法将“拼字游戏”重新变成“爆米花”?

【问题讨论】:

  • 您知道它是随机输出吗?没有可重现的算法,所以没有“解散”它。
  • 我不这么认为。您将不得不创建一个类或其他东西来存储原始未洗牌的字符串。
  • 我删除了一条关于将其存储在会话/cookie 中的评论,因此我重写了它,但添加了更多内容。您可以做的是使用会话(或 cookie)并将其数量每次增加 1 并将原始字符串存储在会话数组中。一旦它从条件语句中达到第三次随机播放,就显示原始字符串。我可以把它写出来,但我宁愿让你尝试并弄清楚,这样你就可以学习了。如果你在某个地方碰壁,你可以获得更多帮助。
  • 别担心,谢谢大家的想法
  • 我正在为我教授的编程课程窃取有趣的练习 :) 也就是说,如果你有一本有效单词的字典,你可以用字符数做一些有根据的猜测......废话。现在我得去写代码了。谢谢。

标签: php reverse shuffle


【解决方案1】:

如果我们正在谈论取消 str_shuffle 操作,那么尽管 php 文档说:“此函数不会生成加密安全值”,但这是不可能的。反转 str_shuffle 中使用的 rand 算法是一项非常重要的加密任务。

但让我们幻想一下。假设如果我们有一本字典,那么我们可以这样做:

<?php

$list = array('apple', 'popcorn', 'banana');

$shuffle = str_shuffle("popcorn");

$letters = count_chars($shuffle,1);
foreach ($list as $word) {
  if ($letters == count_chars($word,1))
    echo "$word\n";
}

DEMO

【讨论】:

    猜你喜欢
    • 2011-01-15
    • 1970-01-01
    • 2017-03-10
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 2017-03-18
    相关资源
    最近更新 更多